在传统的C#开关中,我们有一个可以聚合多种情况的构造。如何在新的C#8.0 switch expressions中完成?
有多种情况的switch语句:
switch (value)
{
case 1:
case 2:
case 3:
//do some stuff
break;
case 4:
case 5:
case 6:
//do some different stuff
break;
default:
//default stuff
break;
}
C#8开关表达式的示例:
var result = value switch
{
1 => "Case 1",
2 => "Case 2",
3 => "Case 3",
4 => "Case 4",
};
最佳答案
我认为应该以更简洁的方式实现它,但是我这样做的方式是这样的:
private int GetValue(int val) =>
val switch
{
int i when new [] {1, 2, 3}.Contains(i) => DoSomeStuff(),
int j when (j == 6 || j == 5 || j == 4) => DoSomeDifferentSwitch(),
_ => DefaultSwitch()
};
编辑:
这是针对C#9计划的:
colorBand switch
{
Rainbow.Red or Rainbow.Orange => new RGBColor(0xFF, 0x7F, 0x00),
_ => throw new ArgumentException(message: "invalid enum value", paramName: nameof(colorBand)),
};
关于c# - C#8.0开关表达式中的多种情况,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55510463/