我需要有一個枚舉類型變量不會自動初始化爲第一個元素的值。 有沒有辦法如何做到這一點?枚舉變量總是初始化?
2
A
回答
3
沒辦法,除非你用Nullable<SomeEnum>
。
2
你可以考慮將它可爲空
2
枚舉爲int(默認)的基本數據類型,就像一個int無線總是被初始化,所以將枚舉。
最好的辦法是將未初始化的值作爲enum中的第一個條目添加。
因此,例如
public enum MyEnum{ Uninitialized, EnumValue1, EnumValue2, ... };
然後創建它的
MyEnum enumInstance;
現在,它仍然會被初始化爲在枚舉的第一個元素一個實例,但你也知道,它意味着你有尚未初始化它。
0
enum關鍵字用於聲明一個枚舉類型,這是一個由稱爲枚舉數列表的一組命名常量組成的獨特類型。
如果你想在枚舉表示未知值,你可以通過添加元素與未知值0
你可以聲明欄爲Nullable<MyNullableEnum>
一個有用的鏈接做到這一點:
6
枚舉變量不總是被初始化爲頭伏枚舉的線索。對於實例/靜態變量,它們被初始化爲枚舉的「0」值 - 它可能不是一個命名值,例如,
enum Color
{
Red = 1,
Blue = 2,
Green = 3
}
Color c; // This will be 0
局部變量不會被自動初始化 - 他們必須在他們可以讀第一點之前明確賦值,就像任何其他變量。
你不是很清楚你想達到什麼 - 如果你可以提供更多關於背景的細節,那將會有很大的幫助。例如,使用可爲空的值類型可能是,或者您可能只是想在構造函數中強制初始化。
4
技術上的枚舉被初始化爲0,不與第一值:
enum Test {
Second = 1,
Third = 2
}
Test test;
void Main()
{
Console.WriteLine("{0}", (int)test);
}
// Result: 0
從MSDN:The default value of an enum E is the value produced by the expression (E)0.
http://msdn.microsoft.com/en-us/library/sbbt4032(v=vs.80).aspx
相關問題
- 1. 未初始化的枚舉變量值
- 2. 混淆枚舉初始化
- 3. 初始化C#DayOfWeek枚舉
- 4. 在枚舉中進行變量初始化,或者在編譯時阻止缺少枚舉的枚舉
- 5. 變量是枚舉
- 6. 枚舉初始化後聲明
- 7. 覆蓋枚舉元類初始化
- 8. 如何初始化一個枚舉?
- 9. 使用枚舉值初始化BindingList
- 10. 枚舉不初始化正確的值
- 11. C#顯式初始化爲枚舉
- 12. 錯誤枚舉與靜態初始化
- 13. 在枚舉中初始化列表
- 14. 初始化枚舉一個空值
- 15. 變量初始化?
- 16. 初始化變量
- 17. 初始化變量
- 18. 變量初始化
- 19. 變量初始化
- 20. 初始化變量
- 21. 初始化變量
- 22. 初始化變量
- 23. 爲什麼Java枚舉常量初始化不完整?
- 24. 如何初始化枚舉類型的公共變量類在C++編譯時
- 25. 初始化變量的初始化是否正確?
- 26. 通過枚舉方式的單例是懶惰初始化的?
- 27. 正在初始化一個未初始化變量的變量是否合法?
- 28. 爲什麼12位未初始化的int變量總是0xff0?
- 29. ASMX Web服務的成員變量總是重新初始化
- 30. 從另一個泛型枚舉初始化一個通用的Swift枚舉?