我知道我可以使用强制转换
将int转换为枚举MyEnumType myEnum = (MyEnumType) myInteger;
这里的问题是,如果myInteger的类型不是int
void MyMethod(MyObject myObject)
{
MyEnumType myEnum = (MyEnumType) myObject.someProperty;
....
}
以上不是一种不常见的代码模式,但如果对象的属性类型已更改,它将无法在构建时保护我。
是否有内置方法来执行此转换,这会给我一个构建时错误?当然,我可以很容易地编写一个通用的方法,但我想知道是否内置了它。
答案 0 :(得分:2)
您可以轻松地为一个枚举创建一个方法:
public static MyEnumType CastFromInt<T>(int n)
{
return (MyEnumType)n;
}
可悲的是,因为没有办法应用泛型约束,因此泛型类型参数是枚举,所以没有良好的方法来泛化它。你可以这样写:
public static T CastFromInt<T>(int n)
{
return (T)(object)n;
}
但是假设调用者使用枚举作为T
的类型。如果他们不这样做,那就有问题了。这也不必要地输入整数。
答案 1 :(得分:2)
您可以使用
Enum.TryParse(myInteger.ToString(), out result)
获取int的枚举值。
希望这有帮助,