con*_*low 4 .net reflection enums reference-type
建立:
typeof(System.Enum).IsClass == false
Run Code Online (Sandbox Code Playgroud)
它System.Enum
也变得奇怪.IsValueType == false
,但Reflector表明它实际上只是一个abstract class
.
System.Enum
是一个类似a的引用类型,System.ValueType
并将枚举值转换为System.Enum
引用/ 引自引用的装箱/取消装箱.这里没有惊喜.
但是,Type
课堂上没有说出关于System.Enum
自然的真相的原因是什么?System.Enum
类型的反射行为没有任何特别之处,使它看起来不像引用类型.
小智 6
这是.Net 1.1和2.0的问题.我没有在3.0中检查过它
来自MSDN用户David Bernstein
System.Enum类型的IsClass属性返回"false",即使"System.Enum"继承自"System.ValueType"和"typeof(System.ValueType).IsClass"返回"true"(如预期的那样).同时,typeof(System.Enum).IsValueType按预期返回"false".这种观察到的行为似乎与上面的明确文档相矛盾,后者规定:"对于表示Enum和ValueType的Type实例,此属性返回true." 我发现在框架1.1和2.0中都是这种情况.