使用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))。