3.2 枚舉類型(Enum types)的默認值
對於枚舉類型(Enum types),.NET會自動將字面值0(literal 0)隱式地轉換為對應的枚舉類型。
3.2.1 有一個0值成員
如果枚舉類型中的某個成員被賦予0值(不要求是第一個成員),那么枚舉變量所儲存的值就是該成員的值。假定Alignment的成員被賦值如下:
//Code #06
enum Alignment
{
Left = 1,
Center = 0,
Right = 2
}
那么,下面這句
Alignment a = new Alignment();
將等效於
Alignment a = Alignment.Center;
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());
