int があり、対応する列挙値を知りたいです。
実際には列挙型があり、別の列挙型に対応する値を返したいです。
大きなスイッチを使用するだけかもしれませんが、より良い方法があれば知りたいです。
このようなもの?
MyEnum m = (MyEnum)((int)otherEnum);
var en = (StringSplitOptions)SeekOrigin.Begin;
2つのタイプはどのようにenum
「対応」しますか? 直接リンクがない場合は、はい、大きなswitch
ステートメントが必要になります。それ以外の場合、基になる値が同じであれば、ある型から別の型に単純にキャストできます。がある場合は、それを目的の型int
にキャストすることもできます。enum
列挙型が値を共有している場合と、名前を共有している場合の 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
}