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