在C#中定义枚举switch

时间:2020-02-23 14:29:51  来源:igfitidea点击:

在使用a时 switchC#中的陈述,如果使用数值,则决定的原因可能是毫无清楚的。
例如,以下代码并不真正告诉我们决策过程:

//Create an ambiguous switch statement.
int mySelection = 2;
switch (mySelection)
{
case 0:
Console.WriteLine("You chose red.");
break;
case 1:
Console.WriteLine("You chose orange.");
break;
case 2:
Console.WriteLine("You chose yellow.");
break;
case 3:
Console.WriteLine("You chose green.");
break;
case 4:
Console.WriteLine("You chose blue.");
break;
case 5:
Console.WriteLine("You chose purple.");
break;
}

这个代码让你想知道为什么 mySelection有价值 2分配给它以及这些输出语句的所有内容。
代码有效,但它背后的推理是混乱的。
要使此代码更可读,我们可以使用枚举的交换机,如下所示:

//Create a readable switch statement.
Colors myColorSelection = Colors.Yellow;
switch (myColorSelection)
{
case Colors.Red:
Console.WriteLine("You chose red.");
break;
case Colors.Orange:
Console.WriteLine("You chose orange.");
break;
case Colors.Yellow:
Console.WriteLine("You chose yellow.");
break;
case Colors.Green:
Console.WriteLine("You chose green.");
break;
case Colors.Blue:
Console.WriteLine("You chose blue.");
break;
case Colors.Purple:
Console.WriteLine("You chose purple.");
break;
}

两种情况下输出相同:"你选择了黄色。
"但是,在第二种情况下,代码无限更可读。
只需查看代码,我们就知道 myColorSelection具有分配给它的颜色值。
另外,使用a Colors每个人的成员 case声明使选择清晰。
我们了解代码需要特定路径的原因。