什么是在C#中Enum中定义的value__

Tar*_*rik 6 c# enums

什么value__可能会在这里?

value__
MSN
ICQ
YahooChat
GoogleTalk
Run Code Online (Sandbox Code Playgroud)

我运行的代码很简单:

namespace EnumReflection
{
    enum Messengers
    {
      MSN,
      ICQ,
      YahooChat,
      GoogleTalk
    }

  class Program
  {
    static void Main(string[] args)
    {
      FieldInfo[] fields = typeof(Messengers).GetFields();

      foreach (var field in fields)
      {
        Console.WriteLine(field.Name);
      }

      Console.ReadLine();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Gra*_*ICA 7

你可以在这里找到更多.海报甚至有样本代码,可以解决问题...只需插入BindingFlags.Public | BindingFlags.Static位于GetFields()的括号之间.

通过使用反射,我想我会占上风并控制我的枚举问题.不幸的是,在枚举类型上调用GetFields会在返回的列表中添加一个名为value__的额外条目.在浏览了Enum的反编译后,我发现value__只是枚举用来保存所选成员值的特殊实例字段.我还注意到实际的枚举成员确实标记为静态.因此,要解决此问题,您需要做的就是调用GetFields并将BindingFlags设置为仅检索公共的静态字段