typeof(System.Enum).IsClass == false

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中都是这种情况.