Ako enumerate C# enum
Enumy sú v jazyku C#
široko používané.
A existujú 4 spôsoby, ako enumerate enum v C#
.
- Používanie
C# Enum.GetValues()
v .Net 5 a vyšších verziách. - Použitie
C# Enum.GetValues()
v starších verziách .Net. - Použitie
C# Enum.GetNames()
na enumerate enum names as strings. - Používanie stránky
Linq
Prejdime si príklad, aby sme ho lepšie pochopili.
Najprv vytvoríme jazyk C# enum
public enum LogLevel
{
ERROR,
WARN,
INFO,
DEBUG
}
Stránka enum
predstavuje rôzne typy úrovní protokolovania.
Teraz si ukážeme rôzne spôsoby, ako enumerovať C# enum
.
Používanie C# Enum.GetValues()
Generická metóda v .net 5 a vyšších verziách
Ak používate najnovšiu verziu .Net
, t. j. .Net 5
a vyššiu, môžete použiť generickú verziu pre metódu Enum.GetValues
na enumerate C# enum
.
void loopEnum()
{
LogLevel[] logLevels = Enum.GetValues<LogLevel>();
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
Nová všeobecná verzia Enum.GetValues
vracia pole hodnôt enum.
A ďalej môžeme použiť príkazy for
alebo foreach
na vypísanie zoznamu C# enum
mien.
Keďže pole obsahuje enum
typ, musíme ho previesť na reťazec pomocou metódy ToString()
.
Použitie adresy C# Enum.GetValues()
v starších verziách siete .net.
V starších verziách .Net
nie je k dispozícii generická metóda pre metódu Enum.GetValues()
.
Metóde Enum.GetValues()
musíte ako parameter odovzdať typeof()
enum .
Array logLevels = Enum.GetValues(typeof(LogLevel))
A tá vracia hodnoty enum typu System.Array
a ďalej môžeme použiť príkaz foreach
na prechádzanie cyklu cez C# enum
mien.
void loopEnum()
{
Array logLevels = Enum.GetValues(typeof(LogLevel))
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
Ak chceme výsledok IEnumerable
, môžeme ďalej obsadiť metódu Enum.GetValues()
.
void loopEnum()
{
var logLevels = Enum.GetValues(typeof(LogLevel)).Cast<LogLevel>();
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
Použitie C# Enum.GetNames()
na enumerate enum mien ako reťazcov
C# Enum.GetValues()
metóda vracia pole typov enum.
Preto sme pred vypísaním v konzole konvertovali enum názvy na reťazec.
Pomocou metódy C# Enum.GetNames()
môžeme enumerovať názvy enum ako reťazce, takže ich nie je potrebné konvertovať na reťazce.
Ak používate .Net 5
a vyššie, môžete použiť generickú funkciu C# Enum.GetNames()
.
void loopEnum()
{
string[] logLevels = Enum.GetNames<LogLevel>();
foreach (string logLevel in logLevels)
{
Console.WriteLine(logLevel);
}
}
V starších verziách musíme odovzdať parameter typeof()
enum .
void loopEnum()
{
string[] logLevels = Enum.GetNames(typeof(LogLevel));
foreach (string logLevel in logLevels)
{
Console.WriteLine(logLevel);
}
}
Ak teda chceme en enumerovať názvy ako reťazce, môžeme použiť metódu C# Enum.GetNames()
.
Použitie Linq
Linq forEach
môžeme použiť metódu enumerate C# enum, pomocou metód Enum.GetValues()
a Enum.GetNames()
.
V .Net 5
a vyššie použite nižšie uvedený úryvok kódu.
//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 starších verziách
//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));
Zhrnutie
V tomto tutoriáli sme sa naučili enumerovať enum v jazyku C# pomocou metód Enum.GetValues()
a Enum.GetNames()
.