C# Enum (Énumération) avec exemple

⚡ Résumé intelligent

En C#, les énumérations définissent un ensemble nommé de valeurs entières constantes, comme les jours de la semaine, ce qui simplifie la lecture et la maintenance du code. Le mot-clé `enum` permet de déclarer ces constantes fixes une seule fois, pour une réutilisation dans tout le programme.

  • (I.e. Définition: Le mot-clé enum regroupe les constantes nommées apparentées sous un même type, remplaçant les nombres magiques dispersés par des identifiants lisibles.
  • 🗓️ Exemple de jours : Une énumération appelée Days stocke les jours de la semaine, et Days.Sun renvoie le membre sélectionné par son nom.
  • (I.e. Valeurs sous-jacentes : Les membres d'une énumération correspondent à des valeurs entières qui commencent à zéro et augmentent de un, sauf si des nombres personnalisés sont attribués.
  • (I.e. Conversions : Les conversions explicites transforment une énumération en son entier, tandis que Enum.Parse et Enum.TryParse reconvertissent le texte en membres.
  • (I.e. Drapeaux: L'attribut Flags permet à une énumération de combiner plusieurs options sous forme de champs de bits à l'aide de l'opérateur OU bit à bit.
  • 🤖 Aide à l'IA : GitHub Copilot et ML.NET permettent de générer des définitions d'énumération et d'associer les énumérations aux fonctionnalités d'apprentissage automatique.

Énumération C# (Énumération)

Énumération C#

Une énumération est utilisée dans n'importe quel langage de programmation pour définir un ensemble constant de valeurs. Par exemple, les jours de la semaine peuvent être définis sous forme d'énumération et utilisés n'importe où dans le programme. En C#, l'énumération est définie à l'aide du mot-clé 'enum'.

Voyons un exemple de la façon dont nous pouvons utiliser le mot-clé 'enum'.

Dans notre exemple, nous définirons une énumération appelée jours, qui servira à stocker les jours de la semaine. Pour chaque exemple, nous modifierons uniquement la fonction principale dans notre fichier Program.cs.

Énumération C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program 
 {
  enum Days{Sun,Mon,tue,Wed,thu,Fri,Sat};
  
  static void Main(string[] args) 
  {
   Console.Write(Days.Sun);
   
   Console.ReadKey();
  }
 }
}

Code Explication:-

  1. L'énumération Type de données est spécifié pour déclarer une énumération. Le nom de l'énumération est Days. Tous les jours de la semaine sont spécifiés comme valeurs de l'énumération.
  2. Enfin la fonction console.write permet d'afficher une des valeurs de l'énumération.

Si le code ci-dessus est saisi correctement et que le programme est exécuté avec succès, la sortie suivante sera affichée.

Sortie :

Énumération C#

À partir du résultat, vous pouvez voir que la valeur « Soleil » de l'énumération est affichée dans la console.

Pourquoi utiliser des énumérations en C# ?

Les énumérations rendent un programme plus lisible, plus sûr et plus simple à maintenir. Au lieu de disséminer des nombres non expliqués, parfois appelés nombres magiques, dans le code, une énumération attribue à chaque valeur un nom descriptif qui indique son rôle.

  • Lisibilité: Un nom comme Days.Fri est beaucoup plus clair que le chiffre 5, donc toute personne lisant le code en comprend immédiatement la signification.
  • Sécurité du type : Une variable déclarée avec un type énuméré ne peut contenir qu'un seul des membres définis, ce qui empêche l'insertion de valeurs invalides.ping dans.
  • Maintenabilité: Les constantes associées résident à un seul endroit, de sorte que l'ajout ou le renommage d'une valeur met à jour l'ensemble du programme de manière cohérente.
  • Liaison de données : Les frameworks tels que WPF et ASP.NET peuvent lier une énumération à une liste déroulante, ce qui rend les énumérations utiles pour la création d'interfaces utilisateur.

Comme le compilateur vérifie chaque affectation par rapport aux membres autorisés, les énumérations permettent également de détecter les erreurs au plus tôt, avant l'exécution du programme.

Attribution de valeurs personnalisées à une énumération C#

Par défaut, C# attribue la valeur 0 au premier élément d'une énumération et incrémente chaque élément suivant de 1. Dans l'énumération Days ci-dessus, Sun vaut 0, Mon vaut 1 et Sat vaut 6. Vous pouvez modifier ces valeurs par défaut en attribuant des nombres explicites.

  • Valeurs explicites : L'écriture de l'énumération Level {Low = 1, Medium = 5, High = 10} attribue à chaque membre un nombre choisi au lieu de la séquence par défaut.
  • Travail partiel : Si vous n'attribuez une valeur qu'à certains membres, le compilateur continue la numérotation à partir de la dernière valeur attribuée pour les membres suivants.
  • Type sous-jacent : Par défaut, une énumération stocke ses membres sous forme d'entiers (int), mais vous pouvez la baser sur des octets (byte), des entiers courts (short) ou des entiers longs (long) pour économiser de la mémoire ou étendre la plage de valeurs.

Les valeurs personnalisées sont utiles lorsque les nombres doivent correspondre à un système externe, comme des codes de base de données ou des constantes de protocole, afin que l'énumération reflète exactement les données réelles.

Comment convertir les énumérations C# en entiers, chaînes de caractères et indicateurs ?

En C#, il est fréquent de devoir convertir une valeur d'énumération en un autre format, par exemple en la stockant sous forme de nombre ou en la relisant à partir d'un texte. Ces conversions s'effectuent de plusieurs manières standard.

  • Énumération vers entier : Une conversion explicite telle que (int)Days.Wed renvoie l'entier sous-jacent, ce qui est utile pour le stockage ou l'arithmétique.
  • entier vers énumération : La conversion dans l'autre sens, par exemple (Days)3, transforme un nombre en membre d'énumération correspondant.
  • Chaîne de caractères convertie en énumération : Enum.Parse et Enum.TryParse, plus sûr, convertissent un nom tel que « Fri » en membre Days.Fri sans générer d’erreur en cas de texte invalide.
  • Énumération vers chaîne de caractères : L'appel de la méthode ToString sur n'importe quel membre renvoie son nom ; ainsi, Days.Sun.ToString() produit « Sun » pour l'affichage ou la journalisation.
  • Liste des membres : Les méthodes Enum.GetValues ​​et Enum.GetNames renvoient chaque valeur ou nom, ce qui est utile pour remplir les menus ou valider les entrées.

Lorsqu'une énumération doit représenter une combinaison de choix plutôt qu'un seul, appliquez l'attribut Flags et attribuez à chaque membre une puissance de deux, comme 1, 2, 4 et 8. Vous pouvez ensuite combiner les membres avec l'opérateur OU bit à bit et tester une option spécifique avec la méthode HasFlag.

Ces techniques de conversion permettent à une énumération de passer facilement d'un nom lisible à un nombre stocké, puis à un ensemble de drapeaux combinés.ping Le reste du programme est à la fois sûr et facile à suivre.

FAQ

Une variable énumérée a par défaut la valeur 0, cette valeur étant associée au membre égal à 0. Si aucun membre n'est égal à 0, la variable conserve sa valeur 0 ; c'est pourquoi les développeurs définissent souvent d'abord un membre None ou Unknown pour éviter toute confusion.

Une constante (const) définit une valeur nommée, tandis qu'une énumération (enum) regroupe un ensemble de constantes nommées liées entre elles sous un même type. Les énumérations offrent également une sécurité de type accrue, car une variable ne peut contenir qu'un seul des membres définis de l'énumération.

Oui. Une énumération peut être déclarée dans un espace de noms ou imbriquée dans une classe ou une structure, ce qui limite sa portée à ce type. En C#, il est toutefois interdit de déclarer une énumération dans le corps d'une méthode.

Oui. Deux membres ou plus peuvent partager le même numéro sous-jacent, faisant des noms suivants des alias du premier. Les comparaisons les traitent comme égaux, et la conversion de cette valeur en chaîne de caractères renvoie le nom défini en premier dans l'énumération.

Une énumération est un type valeur ; elle stocke donc ses données directement plutôt que sous forme de référence sur le tas. Elle hérite de System.Enum mais se comporte comme le type entier sous-jacent, ce qui accélère la copie et la comparaison des valeurs d'une énumération.

Oui. En ML.NET, vous pouvez associer une énumération à une variable catégorielle ou à une étiquette, généralement en la convertissant en sa valeur entière ou en utilisant un encodage one-hot. Les énumérations fortement typées garantissent la clarté et la cohérence des colonnes d'entrée d'un pipeline d'apprentissage automatique.

Oui. GitHub Copilot suggère des définitions d'énumération complètes, des valeurs personnalisées, des attributs Flags et des outils de conversion tels que Enum.TryParse dans Visual Studio et VS Code. RevExaminez attentivement chaque suggestion, car Copilot peut choisir des valeurs ou des noms qui ne correspondent pas à votre domaine.

Utilisez la méthode Enum.IsDefined, qui renvoie vrai lorsqu'un nombre ou un nom donné correspond à un membre défini. L'association avec Enum.TryParse vous permet de valider les entrées utilisateur en toute sécurité avant de convertir le texte en valeur d'énumération.

Résumez cet article avec :