class Program
{
static void Main(string[] args)
{
string value = "12345";
Type enumType = typeof(Fruits);
Fruits fruit = Fruits.Apple;
try
{
fruit = (Fruits) Enum.Parse(enumType, value);
}
catch (ArgumentException)
{
Console.WriteLine(String.Format("{0} is no healthy food.", value));
}
Console.WriteLine(String.Format("You should eat at least one {0} per day.", fruit));
Console.ReadKey();
}
public enum Fruits
{
Apple,
Banana,
Orange
}
}
如果执行结果上面的代码所示:为什么Enum.Parse会创建未定义的条目?
你应该每天吃至少一个12345。
如果传递一个未知的名字(字符串),我真的希望抛出一个ArgumentException异常。在Enum.Parse的定义以近距离观察,可以发现:
摘要:
名称或数值的一个或多个枚举常量为等效枚举对象的字符串表示形式。例外:
的ArgumentException:enumType不是一个枚举。 - 或 - 值是一个空字符串或只包含空格。 - 或 - 值是名称,但不是为枚举定义的命名常量之一。
I.e.如果传递一个整数的字符串表示形式,则会创建一个新的枚举值,现在,设计会引发异常。这有意义吗?
至少我现在知道叫Enum.IsDefined(enumType, value)
之前Enum.Parse()
这是一个问题? – 2010-08-26 12:54:01
你为什么要问和回答你自己的问题? – 2010-08-26 12:54:25
问题的行为被问到...... – Markus 2010-08-26 13:00:44