我做了下面的測試代碼:枚舉與價值沒有場「0」
public enum Test
{
One = 1,
Two = 2
}
public class User
{
public Test Flag { get; set; }
}
,我用這樣的:
值將null
,因爲它看起來像User.Flag
用0
初始化。這是爲什麼? 0
對於我的枚舉不是有效的值。不應該使用第一個有效值(1
)進行初始化嗎?
我做了下面的測試代碼:枚舉與價值沒有場「0」
public enum Test
{
One = 1,
Two = 2
}
public class User
{
public Test Flag { get; set; }
}
,我用這樣的:
值將null
,因爲它看起來像User.Flag
用0
初始化。這是爲什麼? 0
對於我的枚舉不是有效的值。不應該使用第一個有效值(1
)進行初始化嗎?
它初始化爲基礎類型的默認值,即int
和default(int)
爲0
。
基礎類型枚舉的是int
類型默認和默認值明顯是0
(可以指定自定義基本類型,但只有原始數字像enum CustomEnum : byte
)
1.10枚舉,C#規格:
每個枚舉類型都有一個相應的整型,稱爲枚舉類型的底層 類型。不明確聲明 基礎類型的枚舉類型具有基礎類型int。枚舉類型的 存儲格式和可能值範圍由其基本類型 確定。枚舉類型可以採用的值集合是 ,不受其枚舉成員的限制。具體而言,枚舉的基礎類型的任何值都可以轉換爲枚舉類型,並且該枚舉類型的有效值是不同的。
看到這個答案:http://stackoverflow.com/q/1165414/25727 – Jan
[Enum初始值問題(C#)]的可能重複(http://stackoverflow.com/questions/1165402/question-on-initial-value-of-an-enum-c ) – jgauffin
@Jan:謝謝。沒有看到那個。將我自己的問題作爲一個副本 – jgauffin