Kako enumerate C# enum
Enumi se pogosto uporabljajo v jeziku C#.
In obstajajo 4 načini za enumerate enum v C#.
- Uporaba
C# Enum.GetValues()v okolju .Net 5 in novejšem. - Uporaba
C# Enum.GetValues()v starejših različicah .Net. - Uporaba
C# Enum.GetNames()za enumerate enum imen kot nizov. - Uporaba
Linq
Za boljše razumevanje si oglejmo primer.
Najprej bomo ustvarili program C# enum
public enum LogLevel
{
ERROR,
WARN,
INFO,
DEBUG
}
Spletna stran enum predstavljajo različne vrste ravni beleženja.
Zdaj si bomo ogledali različne načine za enumC# enum.
Uporaba C# Enum.GetValues() Generične metode v .Net 5 in novejših različicah
Če uporabljate najnovejšo različico .Net, tj. .Net 5 in novejšo, lahko uporabite generično različico za metodo Enum.GetValues, da enumerate C# enum.
void loopEnum()
{
LogLevel[] logLevels = Enum.GetValues<LogLevel>();
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
Nova splošna različica Enum.GetValues vrne polje vrednosti enum.
Nadalje lahko uporabimo izjave for ali foreach za seznam C# enum imen.
Ker polje vsebuje enum vrsto, jo moramo pretvoriti v niz z uporabo metode ToString().
Uporaba metode C# Enum.GetValues() v starejših različicah .Net.
V starejših različicah .Net za metodo Enum.GetValues() ni na voljo generične metode.
Metodi Enum.GetValues() morate kot parameter posredovati typeof() enum .
Array logLevels = Enum.GetValues(typeof(LogLevel))
In ta vrne enum vrednosti tipa System.Array, v nadaljevanju pa lahko uporabimo izjavo foreach za kroženje po zanki skozi C# enum imena.
void loopEnum()
{
Array logLevels = Enum.GetValues(typeof(LogLevel))
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
Če želimo rezultat IEnumerable, lahko dodatno uporabimo metodo Enum.GetValues().
void loopEnum()
{
var logLevels = Enum.GetValues(typeof(LogLevel)).Cast<LogLevel>();
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
Uporaba C# Enum.GetNames() za enumeratiranje enum imen kot nizov
C# Enum.GetValues() metoda vrne polje enum tipov.
Zato smo imena enum pretvorili v niz, preden smo jih natisnili v konzolo.
Z uporabo metode C# Enum.GetNames() lahko enumeraturiramo imena enum kot nize, tako da jih ni treba pretvoriti v nize.
Če uporabljate .Net 5 in višje, lahko uporabite splošno funkcijo C# Enum.GetNames().
void loopEnum()
{
string[] logLevels = Enum.GetNames<LogLevel>();
foreach (string logLevel in logLevels)
{
Console.WriteLine(logLevel);
}
}
V starejših različicah moramo posredovati parameter typeof() enum .
void loopEnum()
{
string[] logLevels = Enum.GetNames(typeof(LogLevel));
foreach (string logLevel in logLevels)
{
Console.WriteLine(logLevel);
}
}
Če torej želimo en enumerate imena kot nize, lahko uporabimo metodo C# Enum.GetNames().
Uporaba Linq
Linq forEach lahko uporabimo metodo enumerate C# enum, s pomočjo metod Enum.GetValues() in Enum.GetNames().
V spletni strani .Net 5 in višjih uporabite spodnji del kode.
//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));
V starejših različicah
//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));
Povzetek
V tem učbeniku smo se naučili enumerate enum v C# z uporabo metod Enum.GetValues() in Enum.GetNames().