回答
做類似的事情的唯一方法是使用擴展方法,這可以使它看起來好像枚舉具有成員方法。
除此之外,您可以爲您的枚舉創建一個伴隨結構類型,該枚舉具有枚舉值的屬性,然後添加其他屬性和方法以支持該值。
不是直接的,但你可以使用擴展方法來提供類似的功能
這在C#中是不可能的。枚舉只能有名稱/值成員。
據我所知,沒有你不能在C#中。雖然你爲什麼也想要?似乎有點奇怪的東西附加變量和功能呢!
不是。在Java中,枚舉是一個類,而在C#中,枚舉只是包裝原始類型的語法糖。
您可以爲枚舉類型定義擴展方法,但不能將狀態添加到枚舉,因爲枚舉在內部表示爲簡單整數類型,並且無處可存儲狀態。
枚舉是強類型的常量。它們本質上是獨特的類型,允許您將符號名稱分配給整數值。在C#傳統中,它們是強類型的,這意味着即使其成員的基礎值相同,一種類型的枚舉也可能不會隱式分配給另一種類型的枚舉。沿着相同的路線,整數類型和枚舉不是可以互換的。不同的枚舉類型和整型類型之間的所有賦值都需要明確的轉換。
您不能在枚舉中使用成員變量或構造函數。也許你正在尋找的是一個結構。
結構類型是一種值類型,可以包含構造函數,常量,字段,方法,屬性,索引器,運算符,事件和嵌套類型。 struct的聲明採用以下格式:
你可以模仿的Java類型安全枚舉模式(在Java中什麼是如此普遍,之前在Java 5中引入枚舉來解決它):
見項目21 here(警告,PDF鏈接)的描述。
如果對象功能比開關功能更重要,那麼你會這樣做,因爲在C#中,如果沒有它,你可以得到類型saftey(這在5之前你無法使用Java)。
有一件事我一直喜歡做的就是用我的枚舉Description屬性,所以我可以存儲我的枚舉3個值容易
Public Enum States
{
[Description("Florida")]
FL = 124
}
然後,我有一個類,可以輕鬆地讀取到/從description屬性中,我可以將整個數據庫代碼表存儲在枚舉文件中。除了所有的海報提出了擴展方法,你可以使用屬性來驅動你的枚舉類的日誌。
你仍然需要利用另外一個類來實際做的枚舉的東西,但你可以使用屬性來更深入添加到您的枚舉,而不是隻具有鍵/值對,它基本上是。
- 1. 可以枚舉包含其他枚舉?
- 2. 枚舉成員
- 3. 我們可以在java中使用C++類型枚舉嗎?
- 4. JAXB/MOXy可以像常規類(非枚舉)一樣序列化枚舉嗎?
- 5. 我可以使用@switch和枚舉嗎?
- 6. 枚舉成員可以是ANSI-C中數組的大小嗎?
- 7. 我可以在枚舉中使用枚舉嗎?
- 8. Jave枚舉成員
- 9. 我可以使用參數枚舉嗎?
- 10. 枚舉和指向成員
- 11. C++和枚舉和類成員
- 12. 枚舉的枚舉[JAVA]
- 13. Java類枚舉枚舉類
- 14. Java枚舉找到枚舉
- 15. 如何使用SWIG枚舉枚舉成員
- 16. 從成員函數返回枚舉
- 17. Java的枚舉和PostgreSQL枚舉
- 18. C++和枚舉
- 19. 爪哇枚舉和Objective-C枚舉
- 20. 枚舉函數
- 21. 枚舉函數?
- 22. roslyn可以生成枚舉嗎?
- 23. 枚舉成員列表以數字
- 24. 使用Java枚舉
- 25. C++枚舉類可以有方法嗎?
- 26. 我們可以在函數內部定義枚舉嗎?
- 27. 如何使用像Swift枚舉這樣的關聯值創建Java枚舉?
- 28. 我們可以改變datomic枚舉嗎?或者我們可以添加任何新的值給datomic枚舉嗎?
- 29. 枚舉裏面的其他枚舉
- 30. 將枚舉轉換爲其他枚舉
你想要它做的正確的面向對象編程 - 涉及與枚舉本身的枚舉,而不是所有的地方開關條款放行爲。 – 2009-09-14 15:12:55
,因爲我在java中做了很多。它實際上是我最喜歡的功能之一;)例如,你有一個枚舉高度,並且在每一箇中你都有一個包含實際高度的額外最終成員。 SMALL.height = 80,NORMAL.height = 100,BIG.height = 120 – clamp 2009-09-14 15:12:55
我想這取決於你希望你的枚舉做什麼,但我不能想象我的需要做到這一點。至於OO,通常我有一個包裝enum的類來提供我需要的任何OO主題。 – Siyfion 2009-09-14 17:53:23