在传统的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/

10-13 07:09