10

同じ整数に対して.NET複数の値を持つことができますか?enum

例えば。

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

4 に答える 4

18

C#では、これはC#言語仕様、バージョン4に従って許可されています。セクションではその可能性について明示的に言及して1.10 Enumsいませんが、セクションの後半で次のように表示されます。14 Enums, 14.3

複数enumのメンバーが同じ関連値を共有する場合があります。例

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

は、enum2つのenumメンバー(BlueおよびMax)が同じ関連付けられた値を持つを示しています。

于 2013-03-17T06:39:26.607 に答える
4

それはうまくいきます。あなたが投稿したコードにはまったく問題はありません。それは問題なくコンパイルされ、コードで動作します。

PersonGender.NonStated == PersonGender.InadequatelyDescribed
于 2013-03-17T06:19:09.627 に答える
2

この質問に関連するStackOverflowの投稿を見つけました。これがどのように機能するかについては非常に賢明な議論があると思います。一意でない列挙値

さて、これはあいまいな(したがって不適切な)列挙型の使用であるというのが私の意見であると付け加えるかもしれません。他の誰かがそれを読んで意味をなすコードを書くことは重要です、そしてこの場合、私はこの列挙型によって延期されるでしょう。

于 2013-03-17T06:36:16.063 に答える
-1

コンテキストで列挙型を使用するのは適切ではないことをお勧めします。代わりに、目的を解決できるクラスとメソッドを作成できます。あなたのクラスでこのようなもの: -

class A
{

    static readonly ABCD= new Dictionary<int,string>
        {
            { 1, "X" },
            { 2, "X" },
            { 3, "Y" }
            { 4, "Y" }
        }
}
于 2013-03-17T06:26:33.420 に答える