English 中文(简体)
类型(System.Enum)。 IsClass=伪造
原标题:typeof(System.Enum).IsClass == false
  • 时间:2009-11-02 15:23:19
  •  标签:

创始者:

typeof(System.Enum).IsClass == false

<代码>System.Enum也变得奇怪。 IsValueType = = 虚假,但反射显示,这实际上只是一个<条码>。

<代码>System.Enum为参考类型,例如<编码>System.ValueType,以及从<代码>System上删除的计算值。 Enum参引造成箱/箱式。 这里没有意外。

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.

最佳回答

它涉及1.Net 1.1和2.0。 我在3.0次中检查了它。

http://msdn.microsoft.com/en-us/library/user-125987.aspx”rel=“nofollow noreferer”

The IsClass property of the System.Enum type returns "false", even though "System.Enum" inherits from "System.ValueType" and "typeof(System.ValueType).IsClass" return "true" (as expected). At the same time, typeof(System.Enum).IsValueType returns "false" as expected. This observed behavior seems to contradict the explicit documentation above which stipulates: "This property returns true for Type instances representing Enum and ValueType." I found this to be the case in both frameworks 1.1 and 2.0.

问题回答

我最近根据《刑法》第4条重新审视了这一问题,并对现在确定的问题进行了思考。 以下定义:

public struct SomeValueType{}

public enum SomeEnum
{
    FirstElement
}

A. 与方案

Console.WriteLine( typeof( Enum ).IsClass );
Console.WriteLine( typeof( SomeEnum ).IsClass );

Console.WriteLine( typeof( ValueType).IsClass );
Console.WriteLine( typeof( SomeValueType).IsClass );

预期成果如下:

CLR2: False, False, True, False 
CLR4: True, False, True, False




相关问题
热门标签