Énumérations d’indicateurs et combinaisons bit à bit
Combinez des valeurs d’énumération avec l’attribut Flags.
Énumérations d’indicateurs et combinaisons bit à bit est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. 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 4 leçons au total.
Énumérations d’indicateurs
Une énumération d’indicateurs représente une combinaison d’options. Marquez-la avec l’attribut [Flags] et donnez à chaque membre une puissance de deux distincte.
using System;
[Flags]
enum Access { None = 0, Read = 1, Write = 2, Execute = 4 }
class Program {
static void Main() {
Access a = Access.Read | Access.Write;
Console.WriteLine(a);
}
}Puissances de deux
Chaque indicateur doit occuper un bit unique : 1, 2, 4, 8, 16. Les valeurs peuvent ainsi être combinées sans chevauchement.
using System;
[Flags]
enum Perm { Read = 1, Write = 2, Delete = 4, Share = 8 }
class Program {
static void Main() {
Console.WriteLine((int)Perm.Share);
}
}Combiner avec OR
Utilisez OR au niveau binaire (|) pour combiner plusieurs indicateurs en une seule valeur.
using System;
[Flags]
enum Access { None = 0, Read = 1, Write = 2, Execute = 4 }
class Program {
static void Main() {
Access a = Access.Read | Access.Execute;
Console.WriteLine((int)a);
}
}Vérifier avec HasFlag
HasFlag vérifie si une valeur combinée contient un indicateur donné.
using System;
[Flags]
enum Access { None = 0, Read = 1, Write = 2, Execute = 4 }
class Program {
static void Main() {
Access a = Access.Read | Access.Write;
Console.WriteLine(a.HasFlag(Access.Write));
Console.WriteLine(a.HasFlag(Access.Execute));
}
}Vérifier avec AND au niveau binaire
Vous pouvez également tester un indicateur avec & et comparer le résultat à une valeur non nulle, ce qui est rapide et explicite.
using System;
[Flags]
enum Access { None = 0, Read = 1, Write = 2 }
class Program {
static void Main() {
Access a = Access.Read | Access.Write;
bool canWrite = (a & Access.Write) != 0;
Console.WriteLine(canWrite);
}
}Supprimer un indicateur
Effacez un indicateur avec AND du complément : a &= ~Access.Write.
using System;
[Flags]
enum Access { None = 0, Read = 1, Write = 2, Execute = 4 }
class Program {
static void Main() {
Access a = Access.Read | Access.Write;
a &= ~Access.Write;
Console.WriteLine(a);
}
}Ajouter un indicateur
Ajoutez un indicateur en lui appliquant OR. S’il est déjà présent, rien ne change.
using System;
[Flags]
enum Access { None = 0, Read = 1, Write = 2, Execute = 4 }
class Program {
static void Main() {
Access a = Access.Read;
a |= Access.Execute;
Console.WriteLine(a);
}
}Inverser un indicateur
XOR (^) active ou désactive un indicateur en une seule étape.
using System;
[Flags]
enum Access { None = 0, Read = 1, Write = 2 }
class Program {
static void Main() {
Access a = Access.Read;
a ^= Access.Write;
Console.WriteLine(a);
a ^= Access.Write;
Console.WriteLine(a);
}
}Pourquoi [Flags] est important
L’attribut [Flags] modifie ToString afin d’afficher les noms combinés au lieu d’un seul nombre.
using System;
[Flags]
enum Access { None = 0, Read = 1, Write = 2, Execute = 4 }
class Program {
static void Main() {
Access a = Access.Read | Access.Execute;
Console.WriteLine(a);
}
}Définir des membres combinés
Vous pouvez définir des membres pratiques qui représentent des combinaisons, comme All.
using System;
[Flags]
enum Access { None = 0, Read = 1, Write = 2, Execute = 4, All = Read | Write | Execute }
class Program {
static void Main() {
Console.WriteLine((int)Access.All);
}
}Les indicateurs en pratique
Les indicateurs représentent de manière compacte les autorisations, les commutateurs de fonctionnalités et les ensembles d’options dans un seul entier.
using System;
[Flags]
enum Feature { None = 0, Dark = 1, Beta = 2, Sync = 4 }
class Program {
static void Main() {
Feature f = Feature.Dark | Feature.Sync;
Console.WriteLine(f.HasFlag(Feature.Beta));
}
}Vérification rapide
Testez votre compréhension des énumérations d’indicateurs.
Récapitulatif
Une énumération [Flags] attribue à chaque membre une puissance de deux unique ; les indicateurs se combinent donc avec | et se testent avec HasFlag ou &. Vous en ajoutez avec |=, en supprimez avec &= ~ et les inversez avec ^=.
L’attribut fait afficher à ToString les noms combinés, et vous pouvez définir des membres pratiques comme All.
Questions Fréquemment Posées
La leçon « Énumérations d’indicateurs et combinaisons bit à bit » est-elle gratuite ?
Oui — le texte complet de « Énumérations d’indicateurs et combinaisons bit à bit » 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 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Énumérations d’indicateurs et combinaisons bit à bit » ?
Combinez des valeurs d’énumération avec l’attribut 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 2 sur 4.
Combien de temps prend la leçon « Énumérations d’indicateurs et combinaisons bit à bit » ?
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
- Définir et utiliser des énumérations
- Énumérations d’indicateurs et combinaisons bit à bit
- Conversions et analyse d’énumérations
- Parcourir les valeurs d’une énumération