开关

switch 语句是一个控制语句,用于从候选列表中选择要执行的开关部分。switch 语句包括一个或多个 switch 部分。每个开关部分包含一个或多个 case 标签,后跟一个或多个语句。如果没有案例标签包含匹配值,则控制权转移到 default 部分(如果有)。严格来说,C#不支持案例转换。但是,如果一个或多个 case 标签为空,则执行将遵循包含代码的下一个 case 块的代码。这允许使用相同的实现对多个 case 标签进行分组。在下面的示例中,如果 month 等于 12,则 case 2 中的代码将被执行,因为 case 标签 12 12 被分组。如果 case 块不为空,

int month = DateTime.Now.Month; // this is expected to be 1-12 for Jan-Dec

switch (month)
{
    case 12: 
    case 1: 
    case 2:
        Console.WriteLine("Winter");
        break;
    case 3: 
    case 4: 
    case 5:
        Console.WriteLine("Spring");
        break;
    case 6: 
    case 7: 
    case 8:
        Console.WriteLine("Summer");
        break;
    case 9:     
    case 10: 
    case 11:
        Console.WriteLine("Autumn");
        break;
    default:
        Console.WriteLine("Incorrect month index");
        break;
}

case 只能用编译时已知的值标记 (例如 1strEnum.A),因此 variable 不是有效的 case 标签,而是 constEnum 值(以及任何文字值)。