类型为int的C#cast对象为可空枚举

前端之家收集整理的这篇文章主要介绍了类型为int的C#cast对象为可空枚举前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我只需要能够将一个对象转换为可空的枚举.对象可以是枚举,null或int.谢谢!
public enum MyEnum { A,B }
void Put(object value)
{
    System.Nullable<Myenum> val = (System.Nullable<MyEnum>)value;
}

Put(null);     // works
Put(Myenum.B); // works
Put(1);        // Invalid cast exception!!

解决方法

怎么样:
MyEnum? val = value == null ? (MyEnum?) null : (MyEnum) value;

Boxed int到MyEnum的转换(如果值不为空),然后使用从MyEnum到Nullable< MyEnum&gt ;.的隐式转换. 没关系,因为你被允许从一个枚举的盒子形式的框中取消它的底层类型,反之亦然. 我相信这实际上是一个不能保证通过C#规范工作的转换,但是保证通过CLI规范工作.所以只要你在CLI上执行你的C#代码(你会是:)你会没事的.

猜你在找的C&C++相关文章