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