嗨,我有一个简单的问题,但是一直困扰我一段时间。
问题:
在C#中使用switch语句时,最好使用enums
而不是constants
,反之亦然?或者这是一个偏好的问题?我之所以这样问,是因为很多人似乎都喜欢使用enums
,但是当您启用int
值时,必须将enum
中包含的每个值转换为{{} 1}},即使您指定int
的类型。
代码段:
enum
是否有某种方法可以创建class Program
{
enum UserChoices
{
MenuChoiceOne = 1,
MenuChoiceTwo,
MenuChoiceThree,
MenuChoiceFour,
MenuChoiceFive
}
static void Main()
{
Console.Write("Enter your choice: ");
int someNum = int.Parse(Console.ReadLine());
switch (someNum)
{
case (int)UserChoices.MenuChoiceOne:
Console.WriteLine("You picked the first choice!");
break;
// etc. etc.
}
}
}
的实例并将整个enum
转换为int?
谢谢!
答案 0 :(得分:10)
为什么不这样做?
UserChoices choice = (UserChoices)int.Parse(Console.ReadLine());
switch (choice)
{
case UserChoices.MenuChoiceOne:
// etc...
然后你只需要施放一次。
更新:修复了代码中的错误!
答案 1 :(得分:2)
我认为枚举对常量的偏好是因为可读性而不是因为性能。我发现在代码中读取枚举(通常而不仅仅是在switch语句中)比读取/理解常量及其用法更容易。
然后顺便说一下,你不必每个案例,你可以投你的开关。
switch((UserChoices)someEnum)
{
...
答案 2 :(得分:1)
我相信你可以做到:
switch((UserChoices)someNum)
{
case UserChoices.MenuChoiceOne:
break;
default:
throw Exception // whatever here
}