1. Qu’est-ce qu’une énumération ?
En C#, une énumération est une structure de données qui permet aux développeurs de définir un ensemble nommé de constantes symboliques ayant des valeurs entières associées. Elle offre une manière claire et lisible de représenter des valeurs discrètes et spécifiques dans le code source.
1.1 Déclaration d’une énumération
Pour créer une énumération en C#, on utilise le mot-clé enum. Voici la syntaxe de base pour déclarer une énumération :
// enum NomDeLEnumeration {
Constante1,
Constante2,
Constante3
}
// Exemple :
enum JoursDeLaSemaine {
Lundi,
Mardi,
Mercredi,
Jeudi,
Vendredi,
Samedi,
Dimanche
}
Dans cet exemple, nous avons créé une énumération appelée JoursDeLaSemaine avec sept constantes symboliques correspondant aux jours de la semaine.
1.2 Attribution des valeurs sous-jacentes
Par défaut, chaque constante d’une énumération reçoit une valeur sous-jacente qui correspond à un entier. Les valeurs sous-jacentes sont attribuées automatiquement, en commençant par 0 et en augmentant de 1 pour chaque constante dans l’ordre de déclaration.
enum Mois {
Janvier, // 0
Février, // 1
Mars, // 2
Avril, // 3
Mai, // 4
Juin, // 5
Juillet, // 6
Août, //
Septembre, // 8
Octobre, // 9
Novembre, // 10
Décembre // 11
}
Tu peux néammoins attribuer des valeurs sous-jacentes personnalisées aux constantes en spécifiant explicitement une valeur lors de la déclaration.
enum Status {
Inactif = 0,
Actif = 1,
Suspendu = 2
}
Dans cet exemple, nous avons attribué des valeurs sous-jacentes explicites à chaque constante.
1.3 Énumérations avec types de données différents
Les valeurs sous-jacentes par défaut sont de type int, mais tu peux utiliser n’importe quel type de données numériques intégral pour les valeurs sous-jacentes, tels que byte, short, int, long, etc.
enum Tailles : byte {
Petit = 1,
Moyen = 2,
Grand = 3
}
Dans cet exemple, nous avons spécifié que les valeurs sous-jacentes de l’énumération Tailles seront de type byte.
1.5 Utilisation des énumérations
Les énumérations sont principalement utilisées pour représenter un ensemble restreint de valeurs qui sont liées conceptuellement dans le contexte d’une application. Au lieu d’utiliser des nombres arbitraires pour représenter ces valeurs, les énumérations offrent des noms symboliques significatifs, ce qui rend le code plus lisible, plus compréhensible et moins sujet aux erreurs.
Une fois que tu as défini une énumération, tu peux l’utiliser pour déclarer des variables, passer des paramètres de méthode et retourner des valeurs de méthode.
enum JoursDeLaSemaine {
Lundi,
Mardi,
Mercredi
}
// Déclaration de variables de type énumération
JoursDeLaSemaine jour = JoursDeLaSemaine.Mardi;
// Passage de paramètres de méthode
void AfficherJour(JoursDeLaSemaine jour) {
Console.WriteLine(jour);
}
AfficherJour(JoursDeLaSemaine.Mercredi);
Dans cet exemple, nous avons déclaré une énumération JoursDeLaSemaine et utilisé cette énumération pour déclarer une variable jour et passer un paramètre de méthode AfficherJour.
1.6 Avantages des énumérations
Lisibilité accrue : Les énumérations utilisent des noms explicites pour représenter des valeurs, ce qui rend le code plus lisible et compréhensible.
Sécurité au niveau des types : Les énumérations sont des types de données distincts, ce qui signifie qu’un compilateur C# émettra une erreur si tu essaies d’assigner une valeur incorrecte à une variable d’énumération.
Facilité de maintenance : En utilisant des énumérations, tu peux facilement ajouter de nouvelles constantes sans affecter le reste du code.
Autocomplétion et aide contextuelle : Microsoft Visual Studio et d’autres IDE offrent une aide contextuelle et une autocomplétion pour les énumérations, facilitant ainsi leur utilisation.
2. Manipulation des énumérations en C#
Une fois que tu as déclaré une énumération en C#, tu peux la manipuler de différentes manières pour obtenir ou traiter les valeurs sous-jacentes associées aux constantes. Nous allons explorer les différentes façons de manipuler les énumérations en C#.
2.1 Conversion d’une valeur d’énumération en chaîne de caractères
Tu peux convertir une valeur d’énumération en une chaîne de caractères à l’aide de la méthode Enum.ToString() ou de l’opérateur ToString().
enum JoursDeLaSemaine {
Lundi,
Mardi,
Mercredi,
// …
}
JoursDeLaSemaine jour = JoursDeLaSemaine.Mardi;
string jourEnChaine = jour.ToString(); // Résultat : « Mardi »
2.2 Conversion d’une chaîne de caractères en valeur d’énumération
Tu peux également convertir une chaîne de caractères en une valeur d’énumération à l’aide de la méthode Enum.Parse().
string jourEnChaine = « Mercredi »;
JoursDeLaSemaine jour = (JoursDeLaSemaine)Enum.Parse(typeof(JoursDeLaSemaine), jourEnChaine);
2.3 Vérification de l’existence d’une constante dans une énumération
Tu peux vérifier si une valeur donnée correspond à une constante définie dans l’énumération à l’aide de la méthode Enum.IsDefined().
enum Nombres {
Un = 1,
Deux = 2,
Trois = 3
}
Nombres nombre = Nombres.Deux;
int valeurEntiere = (int)nombre; // Résultat : 2
2.4 Conversion d’un entier en valeur d’énumération
Tu peux également convertir un entier en une valeur d’énumération à l’aide d’un cast explicite.
int valeurEntiere = 3;
Nombres nombre = (Nombres)valeurEntiere; // Résultat : Nombres.Trois
2.5 Parcourir les constantes d’une énumération
Tu peux parcourir toutes les constantes définies dans une énumération à l’aide de la méthode Enum.GetValues().
foreach (Nombres nombre in Enum.GetValues(typeof(Nombres))) {
Console.WriteLine(nombre);
}
Cela affichera toutes les constantes de l’énumération Nombres : Un, Deux et Trois.
2.6 Opérations mathématiques avec des énumérations
Les énumérations sont basées sur des types numériques, ce qui signifie que tu peux effectuer des opérations mathématiques avec elles.
enum Jours {
Lundi,
Mardi,
Mercredi,
// …
}
Jours jour = Jours.Mardi;
jour += 2; // jour vaut maintenant Mercredi
3. Cas d’Utilisation Réels des Énumérations en C#
Les énumérations en C# sont largement utilisées dans des cas pratiques pour représenter des ensembles de valeurs spécifiques dans le code. Voici quelques cas d’utilisation réels où les énumérations se révèlent très utiles :
1. Jours de la semaine : L’une des utilisations les plus courantes des énumérations est de représenter les jours de la semaine. Cela permet de simplifier le code en utilisant des noms symboliques plutôt que des entiers pour représenter les jours.
enum JoursDeLaSemaine {
Lundi,
Mardi,
Mercredi,
Jeudi,
Vendredi,
Samedi,
Dimanche
}
JoursDeLaSemaine jour = JoursDeLaSemaine.Mardi;
2. États de commande : Lors de la mise en œuvre d’un système de gestion de commandes, les énumérations peuvent être utilisées pour représenter les différents états de commande tels que « En attente », « En cours de traitement » et « Livré ».
enum EtatsCommande {
EnAttente,
EnCoursDeTraitement,
Livre
}
EtatsCommande etat = EtatsCommande.EnCoursDeTraitement;
3. Niveaux d’accès utilisateur : Pour gérer les niveaux d’accès dans une application, les énumérations peuvent être utilisées pour représenter les différents rôles d’utilisateur tels que « Admin », « Modérateur » et « Utilisateur ».
enum NiveauxAcces {
Utilisateur,
Modérateur,
Admin
}
NiveauxAcces niveauAcces = NiveauxAcces.Admin;
4. Options de menu : Lors de la création d’une interface utilisateur, les énumérations peuvent être utilisées pour représenter les différentes options de menu disponibles.
enum OptionsMenu {
Nouveau,
Ouvrir,
Enregistrer,
Quitter
}
OptionsMenu optionSelectionnee = OptionsMenu.Ouvrir;
5. Types de fichiers : Les énumérations peuvent être utilisées pour représenter les différents types de fichiers gérés par une application.
enum TypesFichier {
Texte,
Image,
Audio,
Vidéo
}
TypesFichier typeFichier = TypesFichier.Image;
6. Statuts de connexion : Les énumérations peuvent être utilisées pour représenter les différents statuts de connexion d’un utilisateur dans une application.
enum StatutsConnexion {
Déconnecté,
EnLigne,
Occupé,
Invisible
}
StatutsConnexion statutConnexion = StatutsConnexion.EnLigne;
7. Priorités de tâches : Lors de la gestion de tâches dans une application, les énumérations peuvent être utilisées pour représenter les différentes priorités de tâches telles que « Haute », « Normale » et « Basse ».
enum PrioritesTache {
Haute,
Normale,
Basse
}
PrioritesTache prioriteTache = PrioritesTache.Haute;