首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c#‘括号’类型强制转换的运行时等效项是什么

c#‘括号’类型强制转换的运行时等效项是什么
EN

Stack Overflow用户
提问于 2008-12-05 23:31:09
回答 2查看 1.5K关注 0票数 1

假设我有一个枚举

代码语言:javascript
复制
[Flags]
public enum E { 
    zero = 0,
    one = 1
}

然后我就可以写了

代码语言:javascript
复制
E e;
object o = 1;
e = (E) o;

它会起作用的。

但是如果我在运行时尝试这样做,比如

代码语言:javascript
复制
(o as IConvertible).ToType(typeof(E), null)

它将抛出InvalidCastException。

那么,有没有什么东西我可以在运行时调用,然后它会像上面一样,以同样的方式从int32转换为枚举呢?

EN

回答 2

Stack Overflow用户

发布于 2008-12-05 23:32:42

在中保存转换结果的变量是什么样子的?也就是说,你用哪种类型来声明它?

如果你想要有一个对象变量,就让它成为对象变量。使用Activator.CreateInstance而不是null来创建枚举的默认实例:

代码语言:javascript
复制
object o = Activator.CreateInstance(typeof(E));
票数 0
EN

Stack Overflow用户

发布于 2008-12-07 05:22:48

您还可以使用

代码语言:javascript
复制
Enum.Parse(typeof(E), (int)o)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/345506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档