typeof(System.Enum).IsClass == false
发现:
typeof(System.Enum).IsClass == false
System.Enum
也有 .IsValueType == false
变得很奇怪,但 Reflector 表明它实际上只是一个抽象类
。
System.Enum
是一种类似于 System.ValueType
的引用类型,将枚举值转换为 System.Enum
引用或从 System.Enum
引用转换枚举值会导致装箱/拆箱。这里没有什么惊喜。
但是 Type
类不说出 System.Enum
本质的真相的原因是什么? System.Enum
类型的反射行为没有任何异常之处,使其看起来不像引用类型。
Founded that:
typeof(System.Enum).IsClass == false
It's become strange that System.Enum
has also .IsValueType == false
, but Reflector shows that it is really just an abstract class
.
System.Enum
is a reference type like a System.ValueType
and casting enumeration values to/from System.Enum
reference caused boxing/unboxing. No surprises here.
But what is a reason for Type
class not to tell truth about System.Enum
nature?
There is no anything extraordinary with the System.Enum
type's reflection behavior to make it looks like not a reference type.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是 .Net 1.1 和 2.0 的问题。我还没有在 3.0 中
从 MSDN 用户 David Bernstein
It's an issue with .Net 1.1 and 2.0. I haven't checked it in 3.0
From MSDN User David Bernstein
我最近碰巧在 CLR4 下重新审视这个问题,你猜怎么着,它现在已经修复了。以下定义:
使用此程序
会产生以下结果:
I happened to recently revisit this problem under CLR4 and guess what, it is fixed now. The following definitions:
with this program
Yields the following results: