如何编写switch表达式以支持返回相同结果的多个案例?
对于版本8之前的C#,可以这样编写一个开关:
var switchValue = 3;
var resultText = string.Empty;
switch (switchValue)
{
case 1:
case 2:
case 3:
resultText = "one to three";
break;
case 4:
resultText = "four";
break;
case 5:
resultText = "five";
break;
default:
resultText = "unkown";
break;
}
当我使用带有表达式语法的C#版本8时,就像这样:
var switchValue = 3;
var resultText = switchValue switch
{
1 => "one to three",
2 => "one to three",
3 => "one to three",
4 => "four",
5 => "five",
_ => "unknown",
};
所以我的问题是:如何将案例1、2和3变成仅一个开关案例臂,从而不需要重复该值?
来自“ Rufus L ”的每个建议的更新:
对于我给定的示例,这可行。
var switchValue = 3;
var resultText = switchValue switch
{
var x when (x >= 1 && x <= 3) => "one to three",
4 => "four",
5 => "five",
_ => "unknown",
};
但这并不是我想要完成的。这仍然只是一个案例(具有过滤条件),而不是多个案例产生相同的右手结果。
when
无论如何,它的功能远胜过失败。如果需要,可以使用Contains
值数组。