【发布时间】:2011-02-03 22:36:40
【问题描述】:
我正在将字符串类型的数值转换为相应的枚举。在测试我的代码时,我发现了让我感到困惑的有趣行为。
使用下面的代码示例,有人可以阐明如果/当“s”变量的值与枚举值之一不匹配时,为什么不引发异常?另外,如何将 sEnum var 设置为 Stooge 枚举定义中不存在的值?
class Program
{
enum Stooge
{
Unspecified,
Moe,
Larry,
Curly,
Shemp
}
static void Main(string[] args)
{
while (true)
{
Console.WriteLine("Enter a number...");
string s = Console.ReadLine();
Stooge sEnum = (Stooge)(int.Parse(s)); //Why doesn't this line throw if s != 0, 1, 2, 3, or 4?
Console.WriteLine("\r\nYou entered: {0}\r\nEnum String Value: {1}\r\nEnum Int Value: {2}\r\n", s, sEnum.ToString(), (int)sEnum);
}
}
}
【问题讨论】: