关于c#:知道值时获取枚举名称

Get enum name when value is known

我有一个枚举,其中有不同的颜色。我想传递一些函数int,并让它返回枚举中该位置的颜色名称。

怎么做?


1
return ((MyEnumClass)n).ToString();


另一种选择是使用GetName静态方法:

1
Enum.GetName(typeof(MyEnumClass), n);

这就有了代码本身所具有的好处。很明显,它返回枚举的名称(当您使用例如ToString方法时,可能会有点难以实现)。


在C 6中,您可以使用nameof

1
nameof(YourEnum.Something)

结果:

1
something

如果带颜色的枚举名为MyColorEnumName,请尝试

1
Enum.GetName(typeof(MyColorEnumName),  enumColorValue)

如果您关心性能,请注意使用这里给出的任何建议:它们都使用反射为枚举提供字符串值。如果字符串值是您最需要的,那么最好使用字符串。如果仍然希望类型安全,请定义一个类和一个集合来定义"枚举",并让该类在toString()重写中回显其名称。


下面是基于颜色值获取枚举名称的示例。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  class Program
     {
          //Declare Enum
          enum colors {white=0,black=1,skyblue=2,blue=3 }
      static void Main(string[] args)
        {
          // It will return single color name which is"skyblue"
             string colorName=Enum.GetName(typeof(colors),2);

          //it will returns all the color names in string array.
          //We can retrive either through loop or pass index in array.
             string[] colorsName = Enum.GetNames(typeof(colors));

         //Passing index in array and it would return skyblue color name
             string colName = colorsName[2];

             Console.WriteLine(colorName);
             Console.WriteLine(colName);
             Console.ReadLine();
        }
    }