1

假设我有一个枚举

[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,就像我在上面写一个演员表一样?

4

3 回答 3

4

object o = 1;
object z = Enum.ToObject(typeof(E), o); 

于 2008-12-06T00:19:18.060 回答
0

您保存转换结果的变量看起来如何?即你用哪种类型声明它?

如果您想拥有一个对象变量,请这样做。而不是null,用于Activator.CreateInstance创建枚举的默认实例:

object o = Activator.CreateInstance(typeof(E));
于 2008-12-05T23:32:42.350 回答
0

你也可以使用

Enum.Parse(typeof(E), (int)o)
于 2008-12-07T05:22:47.760 回答