0Pricing
C# Academy · Leçon

Énumérations et [Flags]

Définissez des énumérations avec des valeurs explicites et des types sous-jacents, convertissez-les et analysez-les en toute sécurité, puis modélisez des options combinables avec [Flags].

Énumérations et [Flags] est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 3. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 3 leçons au total.

Vue d’ensemble des énumérations

Objectif : utiliser les énumérations pour les constantes nommées et [Flags] pour les options combinables.

  • Les noms correspondent à des nombres
  • Type sous-jacent (int par défaut)
  • Effectuer des conversions, analyser et valider
  • Combiner au niveau binaire avec [Flags]

Énumération de base

Les énumérations sont des constantes nommées. Vous pouvez afficher leur nom ou effectuer une conversion vers le nombre sous-jacent.

using System;

public enum OrderStatus
{
  Pending = 0,
  Processing = 1,
  Shipped = 2,
  Delivered = 3,
  Cancelled = 4
}

public class Program
{
  public static void Main(string[] args)
  {
    OrderStatus s = OrderStatus.Processing;
    Console.WriteLine("Status = " + s);
    Console.WriteLine("Numeric = " + (int)s);
  }
}

Type sous-jacent et conversion

Vous pouvez choisir un type sous-jacent (short, byte, etc.). Une conversion depuis des nombres ne valide pas la valeur.

using System;

// Choose underlying type if needed (default is int)
public enum HttpCode : short
{
  Ok = 200,
  NotFound = 404
}

public class Program
{
  public static void Main(string[] args)
  {
    short code = (short)HttpCode.Ok; // cast to number
    HttpCode fromNum = (HttpCode)404; // cast from number (no validation)
    Console.WriteLine("code=" + code);
    Console.WriteLine("fromNum=" + fromNum);
  }
}

Analyse et validation

Utilisez Enum.TryParse pour lire du texte et Enum.IsDefined pour valider les valeurs numériques.

using System;

public enum Color
{
  Red = 1, Green = 2, Blue = 3
}

public class Program
{
  public static void Main(string[] args)
  {
    Color c;
    bool ok = Enum.TryParse<Color>("green", true, out c); // ignore case
    Console.WriteLine("Parsed? " + ok + " value=" + c);

    // Validate a numeric value before casting
    int raw = 4;
    bool valid = Enum.IsDefined(typeof(Color), raw);
    Console.WriteLine("Is 4 a defined Color? " + valid);
  }
}

[Flags] en pratique

Ajoutez [Flags] et attribuez des valeurs qui sont des puissances de deux. Combinez-les avec |, testez-les avec &, puis supprimez-les avec ~ et &.

using System;

[Flags]
public enum FileAccessMode
{
  None  = 0,
  Read  = 1,   // 0001
  Write = 2,   // 0010
  Exec  = 4    // 0100
}

public class Program
{
  public static void Main(string[] args)
  {
    FileAccessMode m = FileAccessMode.Read | FileAccessMode.Write; // combine
    Console.WriteLine("Mode = " + m); // prints "Read, Write"

    // Test a flag (two common patterns)
    bool canWrite = (m & FileAccessMode.Write) != 0;
    Console.WriteLine("Can write? " + canWrite);

    // Remove a flag
    m = m & ~FileAccessMode.Write;
    Console.WriteLine("After remove: " + m);
  }
}

Conseils sur les énumérations

Conseils :

  • Attribuez des valeurs explicites et conservez-les stables.
  • Pour [Flags], utilisez des puissances de deux et incluez une valeur None = 0.
  • Validez les entrées avec Enum.TryParse/IsDefined.
  • Évitez d’utiliser des entiers bruts dans les API publiques ; préférez les énumérations.

Signification de l’attribut [Flags]

Vérification rapide : quel attribut permet à une énumération de représenter des options combinables au niveau binaire comme Read | Write ?

Récapitulatif

Récapitulatif : utilisez les énumérations pour obtenir des constantes claires et sûres du point de vue des types. Analysez et validez les valeurs de manière fiable. Pour les options combinables, ajoutez [Flags] et utilisez les opérateurs binaires pour définir, tester et supprimer les indicateurs.

Questions Fréquemment Posées

La leçon « Énumérations et [Flags] » est-elle gratuite ?

Oui — le texte complet de « Énumérations et [Flags] » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 3 leçons au total.

Qu'est-ce que j'apprendrai dans « Énumérations et [Flags] » ?

Définissez des énumérations avec des valeurs explicites et des types sous-jacents, convertissez-les et analysez-les en toute sécurité, puis modélisez des options combinables avec [Flags]. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C# Academy ?

Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 3.

Combien de temps prend la leçon « Énumérations et [Flags] » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?

Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Structures : sémantique de valeur et modèle d’immuabilité
  2. Types similaires aux enregistrements et égalité fondée sur les valeurs (modèle)
  3. Énumérations et [Flags]
← Retour à C# Academy