我有这个枚举:
enum Color
{
RED,
GREEN,
BLUE
}
以及以下IL生成的代码:
.class private auto ansi sealed WindowsFormsApplication1.Color
extends [mscorlib]System.Enum
{
// Fields
.field public specialname rtspecialname int32 value__
.field public static literal valuetype WindowsFormsApplication1.Color RED = int32(0)
.field public static literal valuetype WindowsFormsApplication1.Color GREEN = int32(1)
.field public static literal valuetype WindowsFormsApplication1.Color BLUE = int32(2)
}
但是我的反编译工具无法向我显示C#反编译代码。
我想知道枚举是什么:它是类型吗?它是结构类型吗?
.class
是什么意思?和int32(0)
,等等。
答案 0 :(得分:5)
枚举的实际数据类型可以是a number of basic types, like byte
, int
and long
。 (在这种情况下,int
:int32 value__
)
定义的.class
包含可能枚举值的后备列表(static
字段和枚举值本身。)(请注意.class
为also used for struct
in CIL,所以不要我太过于字面意思了。所以我猜这是一个结构,它更有意义,因为它实际上只包含一个不可变的支持字段。它被视为基本类型。
int32(0)
创建一个值为0
的整数,这是枚举中第一个项的默认值。