在弄亂枚舉的同時,我發現了一個枚舉的奇怪行爲。是什麼導致了這種枚舉的奇怪行爲?
考慮下面的代碼:
static void Main()
{
Console.WriteLine("Values");
Console.WriteLine();
foreach (Month m in Enum.GetValues(typeof(Month)))
{
Console.WriteLine(m.ToString());
}
Console.WriteLine();
Console.WriteLine("Names");
Console.WriteLine();
foreach (var m in Enum.GetNames(typeof(Month)))
{
Console.WriteLine(m);
}
Console.ReadLine();
}
public enum Month
{
January,
May,
March,
April
}
此代碼將產生以下輸出(如預期):
Values
January
May
March
April
Names
January
May
March
April
現在,可以說我改變一點點我的枚舉,像這樣:
public enum Month
{
January = 3,
May,
March,
April
}
如果我運行相同的代碼,相同的結果將apear(這是奇怪的,因爲它是)。現在,如果我改變我的枚舉是這樣的:
public enum Month
{
January = "g",
May,
March,
April
}
我得到以下編譯器錯誤:
無法隱式轉換類型「字符串」到「廉政」。
爲什麼編譯器允許我將enum的值之一設置爲3,但不是g?爲什麼第一個結果與第二個結果完全相同?如果我改變了1月的價值,那麼爲什麼GetValues
不打印3?
Enum是整數。當你看到一個單詞'January'時,它的值爲1.(或者你在第二個例子中指定的值爲3)但它不能具有'g'的值。 – paqogomez 2015-04-01 17:31:01
閱讀http://stackoverflow.com/a/16039343/380384看看你可以用'enum'做什麼。 – ja72 2015-04-01 17:35:14