在.NET
你可以有多個enum
值爲相同的整數?你可以有多個相同的整數枚舉值?
例如。
public enum PersonGender
{
Unknown = 0,
Male = 1,
Female = 2,
Intersex = 3,
Indeterminate = 3,
NonStated = 9,
InadequatelyDescribed = 9
}
在.NET
你可以有多個enum
值爲相同的整數?你可以有多個相同的整數枚舉值?
例如。
public enum PersonGender
{
Unknown = 0,
Male = 1,
Female = 2,
Intersex = 3,
Indeterminate = 3,
NonStated = 9,
InadequatelyDescribed = 9
}
工作正常。您發佈的代碼絕對沒有錯。它編譯就好和代碼工作,需要提醒的是
PersonGender.NonStated == PersonGender.InadequatelyDescribed
我會建議一個枚舉不會在你的上下文中使用,而不是您可以使用創建一個類並且能夠方法正確的事解決你的目的。在你的班級這樣的東西: -
class A
{
static readonly ABCD= new Dictionary<int,string>
{
{ 1, "X" },
{ 2, "X" },
{ 3, "Y" }
{ 4, "Y" }
}
}
你是如何得出這個結論的? – 2013-03-17 06:27:34
@MichaelPetrotta: - 是的,我同意我不應該把它作爲結論,但絕對是我的建議。 – 2013-03-17 06:29:49
爲什麼downvote? – 2013-03-17 06:31:30
我發現這個StackOverflow發佈與此問題相關。我認爲這是如何工作的一個非常明智的討論。 Non-unique enum values
現在,我還可以補充一點,我認爲這將是一個模糊的(因此不正確的)使用枚舉。編寫對其他人閱讀代碼有意義的代碼很重要,在這種情況下,我會被這個枚舉推遲。
在C#中,這是不允許的,因爲每C# Language Specication,第4版。
第1.10 Enums
沒有提到的可能性,但後來在部分14 Enums
,我們看到(在14.3
):
多個枚舉成員可能共享相同的關聯值。該示例
enum Color {
Red,
Green,
Blue,
Max = Blue
}
示出了一個枚舉,其中兩個枚舉成員 - Blue
和Max
- 具有相同的相關聯值。
編譯器在你嘗試時說什麼?說真的,沒有人再想過嗎? – paxdiablo 2013-03-17 06:18:00
@paxdiablo在C++中,很多未定義的行爲將被編譯器接受而不會發出警告。 – 2013-03-17 06:21:32
@ ta.speot.is,這不是C++,它是C#。行爲由MS定義。 – paxdiablo 2013-03-17 06:22:51