2013-03-17 74 views
4

.NET你可以有多個enum值爲相同的整數?你可以有多個相同的整數枚舉值?

例如。

public enum PersonGender 
    { 
     Unknown = 0, 
     Male = 1, 
     Female = 2, 
     Intersex = 3, 
     Indeterminate = 3, 
     NonStated = 9, 
     InadequatelyDescribed = 9 
    } 
+9

編譯器在你嘗試時說什麼?說真的,沒有人再想過嗎? – paxdiablo 2013-03-17 06:18:00

+1

@paxdiablo在C++中,很多未定義的行爲將被編譯器接受而不會發出警告。 – 2013-03-17 06:21:32

+5

@ ta.speot.is,這不是C++,它是C#。行爲由MS定義。 – paxdiablo 2013-03-17 06:22:51

回答

3

工作正常。您發佈的代碼絕對沒有錯。它編譯就好和代碼工作,需要提醒的是

PersonGender.NonStated == PersonGender.InadequatelyDescribed 
1

我會建議一個枚舉不會在你的上下文中使用,而不是您可以使用創建一個類並且能夠方法正確的事解決你的目的。在你的班級這樣的東西: -

class A 
{ 

    static readonly ABCD= new Dictionary<int,string> 
     { 
      { 1, "X" }, 
      { 2, "X" }, 
      { 3, "Y" } 
      { 4, "Y" } 
     } 
} 
+0

你是如何得出這個結論的? – 2013-03-17 06:27:34

+0

@MichaelPetrotta: - 是的,我同意我不應該把它作爲結論,但絕對是我的建議。 – 2013-03-17 06:29:49

+0

爲什麼downvote? – 2013-03-17 06:31:30

2

我發現這個StackOverflow發佈與此問題相關。我認爲這是如何工作的一個非常明智的討論。 Non-unique enum values

現在,我還可以補充一點,我認爲這將是一個模糊的(因此不正確的)使用枚舉。編寫對其他人閱讀代碼有意義的代碼很重要,在這種情況下,我會被這個枚舉推遲。

10

在C#中,這是不允許的,因爲每C# Language Specication,第4版。

1.10 Enums沒有提到的可能性,但後來在部分14 Enums,我們看到(在14.3):


多個枚舉成員可能共享相同的關聯值。該示例

enum Color { 
    Red, 
    Green, 
    Blue, 
    Max = Blue 
} 

示出了一個枚舉,其中兩個枚舉成員 - BlueMax - 具有相同的相關聯值。

相關問題