【问题标题】:What is value__ defined in Enum in C#C# 枚举中定义的 value__ 是什么
【发布时间】:2012-04-10 00:44:12
【问题描述】:

value__ 可能在这里?

value__
MSN
ICQ
YahooChat
GoogleTalk

我跑的代码很简单:

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();
    }
  }
}

【问题讨论】:

标签: c# .net enums


【解决方案1】:

您可以找到更多here。海报甚至有示例代码可以帮助您解决问题...只需插入 BindingFlags.Public | BindingFlags.Static 在 GetFields() 的括号之间。

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

【讨论】:

    猜你喜欢
    • 2010-09-28
    • 2010-10-16
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    相关资源
    最近更新 更多