0

int があり、対応する列挙値を知りたいです。

実際には列挙型があり、別の列挙型に対応する値を返したいです。

大きなスイッチを使用するだけかもしれませんが、より良い方法があれば知りたいです。

4

3 に答える 3

5

このようなもの?

 MyEnum m = (MyEnum)((int)otherEnum);


  var en = (StringSplitOptions)SeekOrigin.Begin;
于 2012-09-12T17:18:37.080 に答える
5

2つのタイプはどのようにenum「対応」しますか? 直接リンクがない場合は、はい、大きなswitchステートメントが必要になります。それ以外の場合、基になる値が同じであれば、ある型から別の型に単純にキャストできます。がある場合は、それを目的の型intにキャストすることもできます。enum

于 2012-09-12T17:19:16.347 に答える
1

列挙型が値を共有している場合と、名前を共有している場合の 2 つのケースがあります。ここに示すように、値をキャストして名前を解析できます。名前も値も同じでない場合は、もちろんこれを行うことはできません。

public void Test() {
    var one = FirstEnumWithSameValues.Two;
    var two = (SecondEnumWithSameValues) one;

    var three = FirstEnumWithSameName.Two.ToString();
    var four = (SecondEnumWithSameName) Enum.Parse(typeof(SecondEnumWithSameName), three);
}

public enum FirstEnumWithSameValues
{
   One = 1,
   Two = 2,
   Three = 3
}

public enum SecondEnumWithSameValues
{
    Uno = 1,
    Due = 2,
    Trez = 3
}

public enum FirstEnumWithSameName
{
    One = 1,
    Two = 2,
    Three = 3
}

public enum SecondEnumWithSameName
{
    One = 4,
    Two = 5,
    Three = 6
}
于 2012-09-12T17:41:35.813 に答える