3.new、值類型的默認構造函數和值類型的默認值
通常我們使用new來調用引用類型的實例構造函數(Instance Constructors),或者自定義值類型的非默認實例構造函數(Non-Default Instance Constructors)。然而,我們也可以使用new來調用值類型(包括內置簡單類型和自定義類型)的默認構造函數,例如:
int i = new int();
這裡,new調用int的默認構造函數把i初始化為對應的默認值——0。當然,這個默認構造函數由.NET自動提供(但你不能手動提供)。也就是說,使用new來調用值類型的默認構造函數,該值類型將被自動設為對應的默認值。.Net的值類型分為簡單類型(Simple types)、枚舉類型(Enum types)和結構類型(Struct types)。
3.1 簡單類型(Simple types)的默認值
對於簡單類型(Simple types),它們的默認值如下表所示:
Simple Type Default Value bool false byte 0 char '\0' decimal 0.0M double 0.0D float 0.0F int 0 long 0L sbyte 0 short 0 uint 0 ulong 0 ushort 0
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;