internal enum eCoinType
{
g = 0,
h = 1,
s = 2
}
我已經看到了這條線在同一代碼:約枚舉簡單的問題
eCoinType coin = new eCoinType();
是什麼意思?
Enum中的「新」聲明有什麼作用? 謝謝
internal enum eCoinType
{
g = 0,
h = 1,
s = 2
}
我已經看到了這條線在同一代碼:約枚舉簡單的問題
eCoinType coin = new eCoinType();
是什麼意思?
Enum中的「新」聲明有什麼作用? 謝謝
它創建一個eCoinType
實例,默認值爲0,對應於eCoinType.g
。默認的構造函數是System.Enum
class。
請注意,儘管使用了關鍵字new
,但您仍然創建值類型的項,因爲枚舉是值類型,而不是引用類型。這與使用new
創建結構實例相似。
只要添加到@BoltClock所說的內容,它將創建一個eCoinType
,其默認值爲0,如果是數字類型,則爲enum
。所以它會等於:
// These all mean the same thing
eCoinType coin = eCoinType.g; // <-- This one is preferred, though
eCoinType coin = new eCoinType();
eCoinType coin = default(eCointType);
eCoinType coin = (eCoinType)0;
這是一種壞態度。我讓程序員使用這個默認構造函數來枚舉枚舉的第一個值,而程序員實際上需要枚舉的第一個值。請注意,有些人爲現有枚舉添加了值,而不關心順序,如果他們將新值置於頂部,則會在代碼中發現未定義的行爲。
eCoinType cointype = new eCoinType();
在這種情況下等於
eCoinType cointype = eCoinType.g;
但是,如果你修改eCoinType和g之前放的東西,你已經改變了應用程序邏輯。
Mybe存在對於一個用例(通過使用在不同的插件模塊?聲明枚舉修改應用程序邏輯),但是儘可能多abscure如陰影在Visual Basic :)
另外'eCoinType硬幣=超載關鍵字默認(eCoinType)'。 – BoltClock 2011-03-25 00:00:04
啊,好點,這是另一個好的。 – 2011-03-25 00:00:51