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.