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.