什么是c#'bracketed'类型转换的运行时等价物

时间:2008-12-05 23:31:09

标签: c# casting enums runtime

假设我有一个枚举

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

3 个答案:

答案 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)