Comment enumerate C# enum
Les Enums sont largement utilisés dans le langage C#
.
Il existe 4 façons d’utiliser enumerate enum dans C#
.
- Utilisation de
C# Enum.GetValues()
dans .Net 5 et plus. - Utilisation de
C# Enum.GetValues()
dans les anciennes versions de .Net. - Utilisation de
C# Enum.GetNames()
pour enumerater les noms enum en tant que chaînes de caractères. - Utilisation de
Linq
Prenons un exemple pour mieux comprendre.
Tout d’abord, nous allons créer un fichier C# enum
public enum LogLevel
{
ERROR,
WARN,
INFO,
DEBUG
}
Le site enum
représente différents types de niveaux de journalisation.
Nous allons maintenant voir différentes manières de enumerate the C# enum
.
Utilisation de la méthode générique C# Enum.GetValues()
dans .Net 5 et plus
Si vous utilisez la dernière version de .Net
, c’est-à-dire .Net 5
et plus, vous pouvez utiliser la version générique de la méthode Enum.GetValues
pour enumerate the C# enum
.
void loopEnum()
{
LogLevel[] logLevels = Enum.GetValues<LogLevel>();
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
La nouvelle version générique de Enum.GetValues
renvoie le tableau des valeurs de enum.
Et nous pouvons utiliser les instructions for
ou foreach
pour lister les noms C# enum
noms.
Comme le tableau contient le type enum
nous devons le convertir en chaîne de caractères en utilisant la méthode ToString()
.
Utilisation de C# Enum.GetValues()
dans les anciennes versions de .Net.
Dans les anciennes versions de .Net
, il n’y a pas de méthode générique disponible pour la méthode Enum.GetValues()
.
Vous devez passer typeof()
enum comme paramètre à la méthode Enum.GetValues()
.
Array logLevels = Enum.GetValues(typeof(LogLevel))
Celle-ci renvoie enum valeurs de type System.Array
et nous pouvons ensuite utiliser l’instruction foreach
pour parcourir les noms en boucle C# enum
noms.
void loopEnum()
{
Array logLevels = Enum.GetValues(typeof(LogLevel))
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
Si vous souhaitez obtenir le résultat IEnumerable
, nous pouvons utiliser la méthode Enum.GetValues()
.
void loopEnum()
{
var logLevels = Enum.GetValues(typeof(LogLevel)).Cast<LogLevel>();
foreach (LogLevel logLevel in logLevels)
{
Console.WriteLine(logLevel.ToString());
}
}
Utilisation de C# Enum.GetNames()
pour enumériger enum noms en chaînes de caractères
C# Enum.GetValues()
la méthode renvoie un tableau de types enum.
C’est pourquoi nous avons converti les noms enum en chaînes de caractères avant de les imprimer dans la console.
En utilisant la méthode C# Enum.GetNames()
, nous pouvons enumerater les noms enum en tant que chaînes de caractères, de sorte qu’il n’est pas nécessaire de les convertir en chaînes de caractères.
Si vous utilisez .Net 5
et plus, vous pouvez utiliser la fonction générique C# Enum.GetNames()
.
void loopEnum()
{
string[] logLevels = Enum.GetNames<LogLevel>();
foreach (string logLevel in logLevels)
{
Console.WriteLine(logLevel);
}
}
Dans les anciennes versions, nous devons passer le paramètre typeof()
enum .
void loopEnum()
{
string[] logLevels = Enum.GetNames(typeof(LogLevel));
foreach (string logLevel in logLevels)
{
Console.WriteLine(logLevel);
}
}
enumAinsi, si vous souhaitez obtenir des noms sous forme de chaînes de caractères, vous pouvez utiliser la méthode C# Enum.GetNames()
.
En utilisant Linq
Nous pouvons utiliser la méthode Linq forEach
pour enumerate C# enum, avec l’aide des méthodes Enum.GetValues()
et Enum.GetNames()
.
À partir de .Net 5
, utilisez l’extrait de code ci-dessous.
//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));
Dans les versions plus anciennes
//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));
Résumé
Dans ce tutoriel, nous avons appris à créer enumerate enum en C# en utilisant les méthodes Enum.GetValues()
et Enum.GetNames()
.