3.2.2 沒有0值成員
如果枚舉類型中任何一個成員都不為0,例如
// Code #07
enum Alignment
{
Left = 1,
Center = 2,
Right = 3
}
那麼
Alignment a = new Alignment();
將等效於
Alignment a = (Alignment)0;
或者
Alignment a = 0;
而此時,枚舉變量a所儲存的值我們可以稱為非預定義枚舉(成員)值。
3.2.3 有兩個或以上的0值成員
那麼,如果枚舉類型裡存在多於一個成員被賦予0值呢?例如
// Code #08
enum Alignment
{
Left = 0,
Center = 1,
Right = 0
}
你能猜得出下面代碼的運行結果嗎?
// Code #09
Alignment a = new Alignment();
Console.WriteLine(a.ToString());
從該代碼的運行結果中我們可以看到,new把Alignment.Left“許配”給枚舉變量a。現在讓我們看看下面這段代碼:
// Code #10
string a = Enum.GetName(typeof(Alignment), 0);
Console.WriteLine(a.ToString());
其實,Code #10和Code #09的輸出結果一樣的,從.Net的源代碼中我們也可以看到,選擇對象的規則是先用Array.Sort(Array keys, Array items);對枚舉成員名稱及其值進行排序,再用循環挑選第一個出現的幸運兒。