C# 8.0的新功能一:switch表达式

205 阅读1分钟

使用switch语句时,使用switch表达式可以编写更少的代码行。如果您有一个switch语句根据输入来设置/返回一个值,这将很有用。

在C#8之前,可以使用以下代码将int转换为其等效的字符串:

string word;
switch (number)
{
    case 1:
        word = "one";
        break;
    case 2:
        word = "two";
        break;
    case 3:
        word = "three";
        break;
    default:
        throw new ArgumentOutOfRangeException(nameof(number));                    
}

在前面的代码中,如果输入的int数不是1,2或3,则会引发异常,否则将可变字设置为字符串表示形式“一”,“二”或“三”。

在C#8中,我们可以改用switch表达式。switch表达式返回一个值,这意味着我们可以将字符串返回到word变量中,如下所示:

string word = number switch
{
    1 => "one",
    2 => "two",
    3 => "three",
    _ => throw new ArgumentOutOfRangeException(nameof(number))
};

将此版本与第一个版本进行比较,您会发现我们的代码少了很多,我们没有所有重复的case和break。

还要注意,默认块已被引发异常的表达式替换。

还要注意,由于我们不在乎该值,因此代码使用了一个_。(丢弃是“在应用程序代码中有意未使用的占位符变量”(MS))。