J'ai un enum qui a des couleurs différentes. Je voudrais passer une fonction une int
et lui faire renvoyer le nom de couleur qui est dans l'énum à cette position.
Quel est le moyen de faire ça?
return ((MyEnumClass)n).ToString();
Une autre option consiste à utiliser la méthode statique GetName
:
Enum.GetName(typeof(MyEnumClass), n);
Cela a l'avantage que le code parle pour lui-même. Il devrait être évident qu'il renvoie le nom de l'énumération (ce qui peut être un peu difficile à réaliser lorsque vous utilisez par exemple la méthode ToString
).
En c # 6, vous pouvez utiliser nameof
.
nameof(YourEnum.Something)
résulte en:
something
Si votre enum avec les couleurs est nommé MyColorEnumName
, Try
Enum.GetName(typeof(MyColorEnumName), enumColorValue)
Si vous vous souciez de la performance, prenez garde à l’utilisation des suggestions données ci-dessous: elles utilisent toutes la réflexion pour donner une valeur de chaîne à l’énumération .Si la valeur de chaîne est ce dont vous avez le plus besoin, utilisez plutôt des chaînes. Si vous souhaitez toujours sécuriser le type, définissez une classe et une collection pour définir vos "enums", puis indiquez à la classe son nom dans le remplacement de ToString ().
Voici l'exemple pour obtenir le nom Enum en fonction de la valeur de couleur.
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();
}
}