嗨,我有一个简单的问题,但一直在困扰着我一段时间。使用switch语句常量或枚举? (哪个更好)? C#
问:
当在C#中使用switch语句,是它认为更好的做法是使用enums
在constants
反之亦然?或者这是一个偏好问题?我这样问是因为很多人似乎都喜欢使用enums
,但是当您打开int
值时,即使您指定了enum
的类型,也必须将enum
中包含的每个值都转换为int
。
代码段:
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
的一个实例,只投全enum
为int?
谢谢!
谢谢!我现在明白了。 – Alex 2009-11-25 19:18:12
这也是我的方法。然而,有一点需要考虑的是你的int值来自哪里。在这种情况下,您正在从控制台读取用户输入,因此用户可能会输入与UserChoices枚举中的任何值都不相对应的值。在这种情况下,我相信演员会抛出一个异常,这可能是也可能不是你想要的行为。如果您不确定您拥有的值是否为有效的枚举值,则可以使用Enum.IsDefined函数来查找。 – 2009-11-25 20:36:10
不,如果您将一个int转换为不存在的值,则不会引发异常(尝试它)。您应该使用“default:”情况来处理这种情况。虽然int.Parse可以抛出,但这是在原始代码中 - 我没有改变它。 – 2009-11-25 20:49:20