GetFields()
时在枚举类型上,我得到了一个 int32 类型的额外字段。它从哪里来的?? (GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static) )
,它返回所需的字段。这是否意味着枚举的字段不是 Public ? 谢谢
最佳答案
反光板 IL Spy可以解释这一点。
看一下反编译的枚举,您会看到如下所示的内容:
.class public auto ansi sealed ConsoleApplication1.Foo
extends [mscorlib]System.Enum
{
// Fields
.field public specialname rtspecialname int32 value__
.field public static literal valuetype ConsoleApplication1.Foo Bar = int32(0)
.field public static literal valuetype ConsoleApplication1.Foo Baz = int32(1)
} // end of class ConsoleApplication1.Foo
即
Foo
枚举被实现为一个封装了 int32
的密封类。调用value__
- 您看到的额外字段。值得注意的是,它也继承自
System.Enum
它也有额外的(静态)字段。
关于.net - 获取枚举值的 GetFields 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8149591/