Ich habe eine Enum, die verschiedene Farben hat. Ich würde gerne eine Funktion übergeben eine int
und haben Sie den Farbnamen, der in der Enum in dieser Position ist.Get enum name wenn Wert bekannt ist
Wie geht das?
Ich habe eine Enum, die verschiedene Farben hat. Ich würde gerne eine Funktion übergeben eine int
und haben Sie den Farbnamen, der in der Enum in dieser Position ist.Get enum name wenn Wert bekannt ist
Wie geht das?
return ((MyEnumClass)n).ToString();
Während ich Tomas Antwort mag, hat dies den Vorteil, auf den Punkt zu kommen. Danke. – WedTM
Wenn Ihr Enum mit Farben MyColorEnumName
benannt ist, versuchen
Enum.GetName(typeof(MyColorEnumName), enumColorValue)
Eine weitere Option ist die GetName
statische Methode zu verwenden:
Enum.GetName(typeof(MyEnumClass), n);
Dies den Vorteil hat, dass der Code spricht für selbst. Es sollte offensichtlich sein, dass es den Namen der Enumeration zurückgibt (was ein wenig schwierig zu realisieren ist, wenn Sie zum Beispiel die Methode ToString
verwenden).
Hat mir in einer Situation geholfen, den Namen aus dem Wert auf der Ansichtsseite zu holen, um Rollen zu überprüfen, damit der Benutzer zu den Seiten navigieren kann. –
Wenn Sie Wert auf Leistung legen, achten Sie darauf, einen der folgenden Vorschläge zu verwenden: Sie verwenden alle Reflektion, um einen Zeichenfolgenwert für die Enumeration anzugeben. Wenn der Zeichenfolgenwert das ist, was Sie am meisten benötigen, sollten Sie besser Strings verwenden. Wenn Sie weiterhin Sicherheit eingeben möchten, definieren Sie eine Klasse und eine Sammlung, um Ihre "enums" zu definieren, und lassen Sie die Klasse ihren Namen in der ToString() - Überschreibung wiedergeben.
Warum haben so viele scheinbar einfache Dinge in C# schmerzhafte Auswirkungen auf die Leistung? –
Weil es eine Programmiersprache ist? – jedmao
Es ist nicht so, dass dies eine übliche Operation ist - Enum-Namen können nicht einmal Leerzeichen enthalten, daher werden Sie sie selten als "freundliche Namen" für etwas verwenden wollen. – mquander
In C# 6 können Sie nameof
verwenden.
nameof(YourEnum.Something)
Ergebnisse in:
something
Unten ist das Beispiel Enum Name auf dem Farbwert basiert zu erhalten.
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();
}
}
Und warum nicht die Enum zu der Methode übergeben? und Was erwarten Sie, wenn das int übergeben wird, entspricht es nicht einem Wert Ihrer Enum? –