我有一个包含不同颜色的枚举类型。我想向某个函数传递一个 int
参数,并让它返回该位置的枚举中的颜色名称。
应该如何实现这个功能?
return ((MyEnumClass)n).ToString();
GetName
静态方法:Enum.GetName(typeof(MyEnumClass), n);
这样做的好处在于代码可以自我说明。显然它返回枚举的名称(使用ToString
方法可能会比较难以实现)。
nameof
。nameof(YourEnum.Something)
导致结果:
something
MyColorEnumName
,请尝试:Enum.GetName(typeof(MyColorEnumName), enumColorValue)
如果您关心性能,请注意不要使用此处提供的任何建议:它们都使用反射来为枚举类型提供字符串值。 如果您最需要的是字符串值,则最好使用字符串。如果您仍然需要类型安全,请定义一个类和一个集合来定义您的“枚举”,并让该类在ToString()重写中回显其名称。
以下是根据颜色值获取枚举名称的示例。
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();
}
}
((YourEnum)Value).ToString()
例如。
((MyEnum)2).ToString()
注意:请记住,您的枚举类型应该被 [Flag] 修饰,并且枚举值必须大于 0。