在C#中获取枚举元素的确切名称

时间:2016-09-11 08:05:16

标签: c# .net reflection enums

我有一个汇编文件,用于定义enum如下:

public enum DataType{  
    @byte,  
    @short,  
    @int,  
    @long,
    ...  
}  

当我通过调用typeof(DataType).GetEnumNames()Enum.GetNames(typeof(DataType))方法获取其名称时,我将获得以下字符串文字:
["byte", "short", "int", "long", ...]
如何获得元素的确切名称?
命名枚举元素有什么错误吗?

2 个答案:

答案 0 :(得分:2)

您实际上在枚举中获得了这些字段的正确名称。如MSDN中所述:

  

关键字是预定义的保留标识符,对编译器有特殊含义。它们不能用作程序中的标识符,除非它们包含@作为前缀。例如,@ if是有效的标识符,但如果不是因为if是关键字。1

答案 1 :(得分:-1)

我认为您可以将它们分开:

string s = "";
List<string> l = new List<string>();
foreach(chat c in typeof(DataType).GetEnumNames())
{
  if(c == '\"')
  {
    if(!s.Contains(','))
      l.Add(s);
    s = "";
  }
  else s += c;
}

然后你可以通过索引访问名称

更新:您可以用

替换该代码
string[] names = Enum.GetNames(DataTypes);