最佳答案
如何编写开关表达式来支持多种情况返回相同的结果?
对于版本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转换为只有一个开关-情况-臂,这样值就不需要重复?
根据“ < em > Rufus L ”的建议更新:
对于我给出的例子,这是有效的。
var switchValue = 3;
var resultText = switchValue switch
{
var x when (x >= 1 && x <= 3) => "one to three",
4 => "four",
5 => "five",
_ => "unknown",
};
但这不是我想要的结果。这仍然只是一种情况(带有过滤条件) ,而不是多种情况产生相同的右侧结果。