C#多开关案例相同值的Lambda语法

Itamar Shuval

可以将其转换为:

int x = 1;
string xString;
switch (x)
{
    case 1:
        xString = "1";
        break;
    case 2:
        xString = "2";
        break;
    default:
        xString = "default";
        break;
}
Console.WriteLine(xString);

到这个:

int x = 1;
string xString = x switch
{
    1 => "1",
    2 => "2",
    _ => "default",
};
Console.WriteLine(xString);

但是在多个案例中不为每个案例创建lambda行的情况下将xString的值设置为相同值的语法是什么?

int x = 1;
string xString;
switch (x)
{
    case 1:
        xString = "1";
        break;
    case 2:
    case 4:
        xString = "even numbers";
        break;
    default:
        xString = "default";
        break;
}
Console.WriteLine(xString);
帕维尔·阿尼克豪斯基(Pavel Anikhouski)

您也可以在此处when子句与switch语句一起使用

switch (x)
{
    case 1:
        xString = "1";
        break;
    case var _ when x % 2 == 0:
        xString = "even numbers";
        break;
    default:
        xString = "default";
        break;
}

使用C#8switch表达式并丢弃它可能更简单

var xString = x switch
{
    1 => "1",
    _ when x % 2 == 0 => "even numbers",
    _ => "default"
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章