C# 同一个整数可以有多个枚举值吗?

C# 同一个整数可以有多个枚举值吗?,c#,.net,enums,clr,C#,.net,Enums,Clr,在.NET中,可以为同一个整数设置多个enum值吗 例如 那很好。你发布的代码绝对没有问题。它编译得很好,可以在代码中工作,但需要注意的是 PersonGender.NonStated == PersonGender.InadequatelyDescribed 我建议在您的上下文中使用enum不是一件正确的事情,相反,您可以使用create类和方法来解决您的问题。在你们班上有类似的情况:- class A { static readonly ABCD= new Dictionary&

.NET
中,可以为同一个整数设置多个
enum
值吗

例如


那很好。你发布的代码绝对没有问题。它编译得很好,可以在代码中工作,但需要注意的是

PersonGender.NonStated == PersonGender.InadequatelyDescribed

我建议在您的上下文中使用enum不是一件正确的事情,相反,您可以使用create类和方法来解决您的问题。在你们班上有类似的情况:-

class A
{

    static readonly ABCD= new Dictionary<int,string>
        {
            { 1, "X" },
            { 2, "X" },
            { 3, "Y" }
            { 4, "Y" }
        }
}
A类
{
静态只读ABCD=新字典
{
{1,“X”},
{2,“X”},
{3,“Y”}
{4,“Y”}
}
}

我发现这个StackOverflow帖子与这个问题有关。我认为这是一个非常明智的讨论如何工作

现在,我还可以补充一点,我认为这是对枚举的一种含糊不清的(因此是不恰当的)使用。编写对其他阅读它的人有意义的代码是很重要的,在这种情况下,我会被这个枚举所拖累。

在C#中,根据版本4,这是允许的。第
1.10节Enums
没有明确提到这种可能性,但在后面的第
14节Enums,14.3
中,我们看到:

多个
enum
成员可以共享相同的关联值。榜样

enum Color {
   Red,
   Green,
   Blue,
   Max = Blue
}
显示一个
enum
,其中两个
enum
成员-
Blue
Max
具有相同的关联值


你试的时候编译器说了什么?说真的,没有人再想了吗?@ C++中的PaxDabLo很多未定义的行为将被编译器所接受,而不是Waln.@ T.Seop.Is,这不是C++,而是C语言。这种行为是由女士定义的。我很想知道,你在这方面的潜在目的是什么?显然,你所说的是不合逻辑的;然而,你似乎不会问一个最终目的毫无意义的问题。@paxdiablo这个问题被标记为VB。你是如何得出这个结论的?@MichaelPetrotta:-是的,我同意我不应该给出结论,但这绝对是我的建议。有趣的是,如果你启用了代码分析器,上述情况很好,但如果您分配了
Max=2
,则分析仪会抱怨分配了相同的常数value@David,这可能是假设,如果将一个常量分配给两个不同的枚举值,则犯错误的可能性为非零,尤其是如果值到处都是:
enum x{a=42,b=17,c=12,d=314159,e=271828,f=17};
。如果您将一个已经存在的枚举值分配给一个枚举值,则可以安全地假设您是有意这样做的。我认为您是对的。这是一种检查您是否做了正确的事情的好方法
enum Color {
   Red,
   Green,
   Blue,
   Max = Blue
}