枚舉變量,任何人都知道它總是默認爲第一個元素?枚舉變量的默認值是什麼
179
A
回答
287
它是枚舉的任何成員表示值0
。具體而言,從documentation:
一個
enum E
的默認值是由表達式(E)0
產生的值。
作爲一個例子,可採取下列枚舉:
enum E
{
Foo, Bar, Baz, Quux
}
在不覆蓋缺省值,打印default(E)
返回Foo
,因爲它是第一個存在的元素。
然而,並不總是該枚舉的0
由第一構件表示的情況下。例如,如果你這樣做:
enum F
{
// Give each element a custom value
Foo = 1, Bar = 2, Baz = 3, Quux = 0
}
印刷default(F)
會給你Quux
,不Foo
。
如果沒有在枚舉G
的元素對應於0
:
enum G
{
Foo = 1, Bar = 2, Baz = 3, Quux = 4
}
default(G)
返回字面上0
,儘管其類型保持爲G
(引通過上述文檔,流延到給定的枚舉類型)。
+1
謝謝,以及用char而不是int定義的枚舉呢? 例如枚舉狀態{Active ='A',Inactive ='I'} – 2015-04-24 16:17:20
7
我認爲依賴enum中值的順序是相當危險的,並且假設第一個總是默認值。如果您關心保護默認值,這將是一個很好的做法。
enum E
{
Foo = 0, Bar, Baz, Quux
}
否則,所需要的只是對命令的粗心重構,並且您有一個完全不同的默認值。
相關問題
- 1. Java中的枚舉類型實例變量的默認值是什麼?
- 2. 什麼是'success_url'變量的默認值
- 3. 枚舉默認值理解
- 4. Thrift默認枚舉值
- 5. 如何設置枚舉類型變量的默認值?
- 6. 枚舉值是什麼?
- 7. Java枚舉註釋值的枚舉默認值
- 8. 當枚舉值不在枚舉中時賦予枚舉的默認值
- 9. 變量是枚舉
- 10. 什麼是枚舉的默認屬性類型編輯器?
- 11. 爲什麼不是Byte默認的枚舉類型?
- 12. 枚舉類型的默認修飾符字段是什麼?
- 13. @RequestParam默認值不接受枚舉值作爲默認值
- 14. 使用基礎枚舉作爲依賴枚舉的默認值
- 15. 枚舉默認的UWP ThemeResources
- 16. 什麼是「枚舉」?
- 17. 使用默認關鍵字的枚舉的默認值?
- 18. 返回默認枚舉值,當枚舉類型未知
- 19. MVC - DropDownListFor枚舉 - 設置默認值
- 20. Phinx遷移 - 枚舉列與默認值
- 21. 打字稿枚舉默認值
- 22. 條紋默認另一個枚舉值
- 23. 夫特 - 嵌套枚舉默認值
- 24. protobuf-net UseImplicitZeroDefaults和枚舉默認值
- 25. C++默認枚舉值使用
- 26. MVC 5 RadioButtonFor枚舉,默認的枚舉值零總是被選中?
- 27. 什麼是c中枚舉的int值?
- 28. 枚舉中的值是什麼?
- 29. C#:一個枚舉的默認值應該是None還是Unknown?
- 30. 枚舉的原始值,類/結構的默認值,有什麼不同?
需要默認枚舉的用例的一個注意事項是使用可爲空的變量。當收到null時,它可以在代碼的正確部分轉換爲默認值,並且在代碼的其餘部分(只傳遞null)中不需要知道該默認值。 – ErikE 2016-03-18 00:25:49