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()
.