Wie man enumerate C# enum
Enums sind in der Sprache C# weit verbreitet.
Und es gibt 4 Möglichkeiten, enumerate enum in C#.
- Verwendung von
C# Enum.GetValues()in .Net 5 und höher. - Verwendung von
C# Enum.GetValues()in älteren .Net-Versionen. - Verwendung von
C# Enum.GetNames()für enumum enum Namen als Strings zu erstellen. - Verwendung von
Linq
Lassen Sie uns ein Beispiel durchgehen, um es besser zu verstehen.
Zuerst werden wir eine C# enum
public enum LogLevel
{
ERROR,
WARN,
INFO,
DEBUG
}
Die enum steht für verschiedene Arten von Protokollierungsstufen.
Jetzt werden wir verschiedene Möglichkeiten sehen, die enumzu erstellen C# enum.
Verwendung der Methode C# Enum.GetValues() Generic in .Net 5 und höher
Wenn Sie die neueste Version von .Net verwenden, d.h. .Net 5 und höher, können Sie die generische Version für die Methode Enum.GetValues verwenden, um enumzu erstellen C# enum.
void loopEnum()
{
LogLevel[] logLevels = Enum.GetValues<LogLevel>();
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
Die neue generische Version von Enum.GetValues gibt das Array der Werte von enum zurück.
Außerdem können wir die Anweisungen for oder foreach verwenden, um die C# enum namen aufzulisten.
Da das Array den enum typ enthält, müssen wir ihn mit der Methode ToString() in eine Zeichenkette umwandeln.
Verwendung von C# Enum.GetValues() in älteren .Net-Versionen.
In den älteren Versionen von .Net gibt es keine generische Methode, die für die Methode Enum.GetValues() verfügbar ist.
Sie müssen typeof() enum als Parameter an die Methode Enum.GetValues() übergeben.
Array logLevels = Enum.GetValues(typeof(LogLevel))
Sie gibt enum Werte des Typs System.Array zurück und wir können die foreach Anweisung verwenden, um eine Schleife durch die C# enum namen.
void loopEnum()
{
Array logLevels = Enum.GetValues(typeof(LogLevel))
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
Wenn Sie IEnumerable Ergebnis wollen, können wir weiter die Enum.GetValues() Methode.
void loopEnum()
{
var logLevels = Enum.GetValues(typeof(LogLevel)).Cast<LogLevel>();
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
Verwendung von C# Enum.GetNames() zur enumerate enum Namen als Strings
C# Enum.GetValues() methode gibt Array von enum Typen zurück.
Deshalb haben wir die enum Namen in Strings umgewandelt, bevor wir sie in der Konsole ausgeben.
Mit der Methode C# Enum.GetNames() können wir enumerate enum Namen als Strings, so dass es nicht erforderlich ist, sie in Strings zu konvertieren.
Wenn Sie .Net 5 und höher verwenden, können Sie die generische Funktion C# Enum.GetNames() verwenden.
void loopEnum()
{
string[] logLevels = Enum.GetNames<LogLevel>();
foreach (string logLevel in logLevels)
{
Console.WriteLine(logLevel);
}
}
In den älteren Versionen müssen wir den Parameter typeof() enum übergeben.
void loopEnum()
{
string[] logLevels = Enum.GetNames(typeof(LogLevel));
foreach (string logLevel in logLevels)
{
Console.WriteLine(logLevel);
}
}
Wenn Sie also enumerate Namen als Zeichenketten verwenden möchten, können wir die Methode C# Enum.GetNames() verwenden.
Verwendung von Linq
Wir können die Methode Linq forEach verwenden, um enumerate C# enum, mit Hilfe der Methoden Enum.GetValues() und Enum.GetNames().
In .Net 5 und höher verwenden Sie den folgenden Codeausschnitt.
//Using Enum.GetValues
Enum.GetValues<LogLevel>()
.ToList()
.ForEach(loglevel => Console.WriteLine(loglevel.ToString()));
//Using Enum.GetNames
Enum.GetNames<LogLevel>()
.ToList()
.ForEach(loglevel => Console.WriteLine(loglevel));
In den älteren Versionen
//Using Enum.GetValues
Enum.GetValues(typeof(LogLevel))
.Cast<LogLevel>().ToList()
.ForEach(loglevel => Console.WriteLine(loglevel.ToString()));
//Using Enum.GetNames
Enum.GetNames(typeof(LogLevel))
.ToList()
.ForEach(loglevel => Console.WriteLine(loglevel));
Zusammenfassung
In diesem Tutorium haben wir gelernt, enumerate enum in C# mit Enum.GetValues() und Enum.GetNames() Methode.