我有一个int,我想知道相应的枚举值。
实际上有一个枚举,我想为另一个枚举返回相应的值。
我可能只是使用大型开关,但我想知道是否有更好的方法。
答案 0 :(得分:5)
这样的东西?
MyEnum m = (MyEnum)((int)otherEnum);
var en = (StringSplitOptions)SeekOrigin.Begin;
答案 1 :(得分:5)
这两种enum
类型如何“对应”?如果没有直接链接,那么是的,需要一个大的switch
语句。否则,如果它们具有相同的基础值,那么您可以简单地从一种类型转换为另一种类型。如果您有int
,则还可以将其转换为所需的enum
类型。
答案 2 :(得分:1)
有两种情况,一种是枚举共享值,另一种是共享名称。您可以转换值并解析名称,如下所示。如果名称和值都不相同,你当然不能这样做。
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
}