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