Guide Complet sur les Enums en C

Bonjour là-bas, future superstar du codage ! Aujourd'hui, nous allons plonger dans le merveilleux monde des enums en C#. Ne vous inquiétez pas si vous n'en avez jamais entendu parler auparavant - d'ici la fin de ce tutoriel, vous serez un expert des enums ! Alors, mettons-nous en route pour cette aventure passionnante ensemble.

C# - Enums

Qu'est-ce que les Enums ?

Imaginez que vous créez un jeu où les joueurs peuvent choisir différentes classes de personnages. Vous pourriez avoir des guerriers, des mages, des archers et des guérisseurs. Comment représenteriez-vous ces options dans votre code ? C'est là que les enums viennent à la rescousse !

Un enum (abréviation de enumeration) est un type spécial en C# qui vous permet de définir un ensemble de constantes nommées. C'est comme créer un type personnalisé avec un ensemble fixe de valeurs possibles. Génial, non ?

Pourquoi utiliser les Enums ?

  1. Ils rendent votre code plus lisible.
  2. Ils aident à prévenir les erreurs en limitant les choix à un ensemble prédéfini.
  3. Ils sont parfaits pour représenter des catégories ou des options.

Déclarer un Enum

Commençons par les bases. Voici comment vous déclarez un enum :

enum CharacterClass
{
Warrior,
Mage,
Archer,
Healer
}

Dans cet exemple, nous avons créé un enum appelé CharacterClass avec quatre valeurs possibles. Par défaut, C# affecte des valeurs entières à chaque membre d'enum, en partant de 0.

Utiliser les Enums dans votre Code

Maintenant que nous avons déclaré notre enum, voyons comment nous pouvons l'utiliser dans notre code :

class Program
{
static void Main(string[] args)
{
CharacterClass myClass = CharacterClass.Warrior;
Console.WriteLine($"Ma classe de personnage est : {myClass}");
}
}

Lorsque vous exécutez ce code, il affichera :

Ma classe de personnage est : Warrior

N'est-ce pas génial ? Nous venons de créer une variable de type CharacterClass et de lui affecter la valeur Warrior. C'est comme donner à votre personnage une carte d'identité !

Valeurs des Enums et le Cast

Souvenez-vous que j'ai mentionné que les enums sont affectés des valeurs entières ? Explorons cela un peu plus :

Console.WriteLine($"Valeur de Guerrier : {(int)CharacterClass.Warrior}");
Console.WriteLine($"Valeur de Mage : {(int)CharacterClass.Mage}");
Console.WriteLine($"Valeur d'Archer : {(int)CharacterClass.Archer}");
Console.WriteLine($"Valeur de Guérisseur : {(int)CharacterClass.Healer}");

Cela affichera :

Valeur de Guerrier : 0
Valeur de Mage : 1
Valeur d'Archer : 2
Valeur de Guérisseur : 3

Nous utilisons ici le cast (c'est ce que fait la partie (int)) pour convertir nos valeurs d'enum en entiers. C'est comme jeter un œil derrière le rideau pour voir comment C# organise notre enum !

Valeurs Personnalisées des Enums

Mais attendez, il y a plus ! Que faire si vous voulez affecter des valeurs spécifiques à vos membres d'enum ? Vous pouvez aussi le faire :

enum CharacterClass
{
Warrior = 1,
Mage = 5,
Archer = 10,
Healer = 15
}

Maintenant, si nous exécutons notre ancien code pour afficher les valeurs, nous obtiendrons :

Valeur de Guerrier : 1
Valeur de Mage : 5
Valeur d'Archer : 10
Valeur de Guérisseur : 15

Cela peut être utile lorsque vous avez besoin que vos valeurs d'enum correspondent à des nombres spécifiques dans votre jeu ou application.

Enums et Instructions Switch

Les enums et les instructions switch sont comme le beurre et la confiture - elles fonctionnent parfaitement ensemble ! Voici un exemple :

static void DescribeClass(CharacterClass characterClass)
{
switch (characterClass)
{
case CharacterClass.Warrior:
Console.WriteLine("Vous êtes un guerrier brave, fort au combat !");
break;
case CharacterClass.Mage:
Console.WriteLine("Vous êtes un mage sage, maître des arts arcaniques !");
break;
case CharacterClass.Archer:
Console.WriteLine("Vous êtes un archer habile, mortel à distance !");
break;
case CharacterClass.Healer:
Console.WriteLine("Vous êtes un guérisseur compatissant, gardien de la vie !");
break;
default:
Console.WriteLine("Classe inconnue. Êtes-vous une classe secrète ?");
break;
}
}

Maintenant, nous pouvons utiliser cette fonction comme ceci :

DescribeClass(CharacterClass.Mage);

Et elle affichera :

Vous êtes un mage sage, maître des arts arcaniques !

Analyse des Enums

Parfois, vous pourriez avoir besoin de convertir une chaîne en une valeur d'enum. Par exemple, si un joueur tape sa classe choisie. Voici comment vous pouvez le faire :

string input = "Archer";
if (Enum.TryParse(input, out CharacterClass playerClass))
{
Console.WriteLine($"Vous avez choisi d'être un {playerClass} !");
}
else
{
Console.WriteLine("Ce n'est pas une classe de personnage valide !");
}

Ce code essaiera en toute sécurité de convertir la chaîne "Archer" en notre enum CharacterClass. Si cela réussit, il affichera :

Vous avez choisi d'être un Archer !

Méthodes des Enums

Terminons par un tableau des méthodes utiles des enums :

Méthode Description Exemple
Enum.GetNames() Récupère un tableau des noms des constantes dans une enumeration spécifiée string[] names = Enum.GetNames(typeof(CharacterClass));
Enum.GetValues() Retourne un tableau des valeurs des constantes dans une enumeration spécifiée CharacterClass[] values = (CharacterClass[])Enum.GetValues(typeof(CharacterClass));
Enum.IsDefined() Retourne un booléen indiquant si une constante avec une valeur spécifiée existe dans une enumeration spécifiée bool isDefined = Enum.IsDefined(typeof(CharacterClass), "Warrior");
Enum.Parse() Convertit la représentation en chaîne du nom ou de la valeur numérique d'un ou plusieurs constants enumerés en un objet enumeré équivalent CharacterClass parsedEnum = (CharacterClass)Enum.Parse(typeof(CharacterClass), "Mage");
Enum.TryParse() Convertit la représentation en chaîne du nom ou de la valeur numérique d'un ou plusieurs constants enumerés en un objet enumeré équivalent. La valeur de retour indique si la conversion a réussi bool success = Enum.TryParse("Healer", out CharacterClass result);

Et voilà, mes chers élèves ! Vous avez juste amélioré vos compétences en C# en maîtrisant les enums. Souvenez-vous, la pratique rend parfait, donc essayez de créer vos propres enums pour différentes situations. Peut-être pourriez-vous faire un enum pour les jours de la semaine, ou les garnitures de pizza, ou même vos langages de programmation préférés !

Continuez à coder, continuez à apprendre, et surtout, amusez-vous ! Jusqu'à la prochaine fois, que votre code soit exempt de bugs et que vos temps de compilation soient rapides !

Credits: Image by storyset