0Pricing
C# Academy · Leçon

É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

  1. Définir et utiliser des énumérations
  2. Énumérations d’indicateurs et combinaisons bit à bit
  3. Conversions et analyse d’énumérations
  4. Parcourir les valeurs d’une énumération
← Retour à C# Academy