Kaip enumerate C# enum
Enumai plačiai naudojami C# kalboje.
Ir yra 4 būdai, kaip enumerate enum C# .
C# Enum.GetValues()naudojimas .Net 5 ir naujesnėse versijose.- Naudojant
C# Enum.GetValues()senesnėse .Net versijose. - Naudojant
C# Enum.GetNames()enum erate enum vardus kaip eilutes. - Naudojant
Linq
Kad geriau suprastume, panagrinėkime pavyzdį.
Pirmiausia sukursime C# enum
public enum LogLevel
{
ERROR,
WARN,
INFO,
DEBUG
}
Svetainė enum žymi skirtingus registravimo lygius.
Dabar pamatysime skirtingus būdus, kaip enumC# enum.
C# Enum.GetValues() bendrojo metodo naudojimas .Net 5 ir naujesnėse versijose
Jei naudojate naujausią .Net, t. y. .Net 5 ir naujesnę, versiją, galite naudoti bendrąją Enum.GetValues metodo versiją, kad enumerate C# enum.
void loopEnum()
{
LogLevel[] logLevels = Enum.GetValues<LogLevel>();
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
Naujoji bendroji Enum.GetValues versija grąžina enum reikšmių masyvą.
Ir toliau galime naudoti for arba foreach teiginius, kad išvardytume C# enum vardus.
Kadangi masyve yra enum tipas, turime jį konvertuoti į eilutę naudodami ToString() metodą.
Naudojant C# Enum.GetValues() senesnėse .Net versijose.
Senesnėse .Net versijose nėra bendrojo Enum.GetValues() metodo.
Reikia perduoti typeof() enum kaip parametrą Enum.GetValues() metodui.
Array logLevels = Enum.GetValues(typeof(LogLevel))
Ir jis grąžina enum tipo System.Array reikšmes, o toliau galime naudoti foreach teiginį, kad cikliškai pereitume per C# enum vardus.
void loopEnum()
{
Array logLevels = Enum.GetValues(typeof(LogLevel))
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
Jei norite IEnumerable rezultato, galime toliau naudoti Enum.GetValues() metodą.
void loopEnum()
{
var logLevels = Enum.GetValues(typeof(LogLevel)).Cast<LogLevel>();
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
Naudojant C# Enum.GetNames() enum erate enum vardus kaip eilutes
C# Enum.GetValues() metodas grąžina enum tipų masyvą.
Todėl prieš spausdindami enum vardus į eilutę juos konvertavome į eilutę.
Naudodamiesi C# Enum.GetNames() metodu galime enumeruoti enum vardus kaip eilutes, kad nereikėtų jų konvertuoti į eilutes.
Jei naudojate .Net 5 ir aukštesnes funkcijas, galite naudoti bendrąją C# Enum.GetNames() funkciją.
void loopEnum()
{
string[] logLevels = Enum.GetNames<LogLevel>();
foreach (string logLevel in logLevels)
{
Console.WriteLine(logLevel);
}
}
Senesnėse versijose turime perduoti typeof() enum parametrą.
void loopEnum()
{
string[] logLevels = Enum.GetNames(typeof(LogLevel));
foreach (string logLevel in logLevels)
{
Console.WriteLine(logLevel);
}
}
Taigi, jei norite enumerate vardus kaip eilutes, galime naudoti C# Enum.GetNames() metodą.
Naudojant Linq
Linq forEach metodą galime naudoti enumerate C# enum, naudodami Enum.GetValues() ir Enum.GetNames() metodus.
.Net 5 ir aukštesniuose formatuose naudokite toliau pateiktą kodo fragmentą.
//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));
Senesnėse versijose
//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));
Santrauka
Šioje pamokoje išmokome enumerate enum C# kalba, naudodami Enum.GetValues() ir Enum.GetNames() metodus.