É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]
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
- Structures : sémantique de valeur et modèle d’immuabilité
- Types similaires aux enregistrements et égalité fondée sur les valeurs (modèle)
- Énumérations et [Flags]