假设我有一个枚举
[Flags]
public enum E {
zero = 0,
one = 1
}
然后我可以写
E e;
object o = 1;
e = (E) o;
它会起作用。
但是如果我尝试在运行时这样做,比如
(o as IConvertible).ToType(typeof(E), null)
它将抛出InvalidCastException。
那么,有没有我可以在运行时调用的东西,它会从int32转换为enum,就像我上面写一个演员一样?
答案 0 :(得分:4)
object o = 1;
object z = Enum.ToObject(typeof(E), o);
答案 1 :(得分:0)
变量如何保存转换结果?即你宣称它是哪种类型的?
如果你想拥有一个对象变量,那就这样做吧。而不是null
,使用Activator.CreateInstance
创建枚举的默认实例:
object o = Activator.CreateInstance(typeof(E));
答案 2 :(得分:0)
您也可以使用
Enum.Parse(typeof(E), (int)o)