Hoe enumereren C# enum
Enums worden veel gebruikt in C#
taal.
En er zijn 4 manieren om enumerate enum in C#
.
C# Enum.GetValues()
gebruiken in .Net 5 en hoger.C# Enum.GetValues()
gebruiken in oudere .Net versies.- Gebruik van
C# Enum.GetNames()
om enumerate enum namen als strings. - Gebruik van
Linq
Laten we een voorbeeld doornemen om het verder te begrijpen.
Eerst maken we een C# enum
public enum LogLevel
{
ERROR,
WARN,
INFO,
DEBUG
}
De enum
staat voor verschillende soorten logboekniveaus.
Nu zullen we verschillende manieren zien om de enumerate van de C# enum
.
C# Enum.GetValues()
Generieke methode te gebruiken in .Net 5 & hoger
Als u de laatste versie van .Net
gebruikt, d.w.z. .Net 5
en hoger, kunt u de generieke versie van de Enum.GetValues
methode gebruiken om enumde C# enum
.
void loopEnum()
{
LogLevel[] logLevels = Enum.GetValues<LogLevel>();
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
De nieuwe generieke versie van Enum.GetValues
geeft de array van enum waarden terug.
En verder kunnen we de verklaringen for
of foreach
gebruiken om de C# enum
namen.
Aangezien de array het enum
type bevat, moeten we het converteren naar de string met de methode ToString()
.
Gebruik C# Enum.GetValues()
in oudere .Net versies.
In de oudere versies van .Net
is er geen generieke methode beschikbaar voor de methode Enum.GetValues()
.
U moet typeof()
enum als parameter doorgeven aan de methode Enum.GetValues()
.
Array logLevels = Enum.GetValues(typeof(LogLevel))
En het geeft enum waarden terug van het type System.Array
en verder kunnen we foreach
statement gebruiken om door de C# enum
namen.
void loopEnum()
{
Array logLevels = Enum.GetValues(typeof(LogLevel))
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
Als u een IEnumerable
resultaat wilt, kunnen we de methode Enum.GetValues()
verder casten.
void loopEnum()
{
var logLevels = Enum.GetValues(typeof(LogLevel)).Cast<LogLevel>();
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
C# Enum.GetNames()
gebruiken om enumerate enum namen als strings te gebruiken
C# Enum.GetValues()
geeft de methode een array van enum types.
Daarom hebben we enum namen geconverteerd naar string voordat we ze afdrukken in de console.
Met de methode C# Enum.GetNames()
kunnen we enumeren enum namen als strings, zodat het niet nodig is ze te converteren naar strings.
Als u .Net 5
en hoger gebruikt, kunt u de generieke functie C# Enum.GetNames()
gebruiken.
void loopEnum()
{
string[] logLevels = Enum.GetNames<LogLevel>();
foreach (string logLevel in logLevels)
{
Console.WriteLine(logLevel);
}
}
In de oudere versies moeten we de parameter typeof()
enum doorgeven.
void loopEnum()
{
string[] logLevels = Enum.GetNames(typeof(LogLevel));
foreach (string logLevel in logLevels)
{
Console.WriteLine(logLevel);
}
}
Dus als u en enumnamen als strings wilt gebruiken, kunnen we de methode C# Enum.GetNames()
gebruiken.
Met behulp van Linq
We kunnen Linq forEach
methode gebruiken om enumerate C# enum, met behulp van Enum.GetValues()
en Enum.GetNames()
methoden.
Gebruik in .Net 5
en hoger het onderstaande codefragment.
//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));
In de oudere versies
//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));
Samenvatting
In deze tutorial hebben we geleerd om enumerate enum in C# met behulp van Enum.GetValues()
en Enum.GetNames()
methode.