Maison > développement back-end > C++ > Comment effectuer des opérations au niveau du bit sur les énumérations de drapeaux en C# ?

Comment effectuer des opérations au niveau du bit sur les énumérations de drapeaux en C# ?

Patricia Arquette
Libérer: 2025-01-13 11:44:43
original
946 Les gens l'ont consulté

How to Perform Bitwise Operations on Flags Enums in C#?

Opérations au niveau du bit de l'énumération [Flags] en C#

Lors de l'utilisation d'énumérations de drapeaux, il est crucial de maîtriser les opérations sur les bits pour gérer et manipuler de manière transparente les bits individuels au sein de la valeur d'énumération. Cette aide-mémoire est destinée à fournir un bref aperçu des opérations courantes sur les bits en C#.

Définir des bits spécifiques

Pour définir un bit spécifique dans l'énumération [Flags], utilisez l'opérateur OR au niveau du bit (|). Prenons l'exemple suivant :

FlagsEnum flags = FlagsEnum.None;
flags |= FlagsEnum.Bit4; // 设置位 4
Copier après la connexion

Supprimer des bits spécifiques

Pour supprimer un bit spécifique, utilisez l'opérateur ET au niveau du bit et la négation du bit. Voici un exemple :

if ((flags & ~FlagsEnum.Bit4) == 0) {
    // 已移除位 4
}
Copier après la connexion

Basculer des bits spécifiques

Pour basculer un bit spécifique sur sa valeur opposée, utilisez l'opérateur XOR au niveau du bit (^).

flags ^= FlagsEnum.Bit4; // 切换位 4
Copier après la connexion

Vérifiez si un bit spécifique est défini

Pour déterminer si un bit spécifique est défini, utilisez l'opérateur ET au niveau du bit, puis comparez.

if ((flags & FlagsEnum.Bit4) == FlagsEnum.Bit4) {
    // 设置了位 4
}
Copier après la connexion

Méthodes d'extension supplémentaires

L'extension de la classe System.Enum avec des méthodes personnalisées peut simplifier davantage les opérations sur les bits. Considérez l'extension suivante :

public static class EnumExtensions {

    public static bool Has<T>(this Enum type, T value) =>
        (((int)(object)type & (int)(object)value) == (int)(object)value);

    public static T Add<T>(this Enum type, T value) =>
        (T)(object)(((int)(object)type | (int)(object)value));

    public static T Remove<T>(this Enum type, T value) =>
        (T)(object)(((int)(object)type & ~(int)(object)value));
}
Copier après la connexion

Ces méthodes fournissent des raccourcis pratiques pour les opérations au niveau du bit :

SomeType value = SomeType.Grapes;
value.Has(SomeType.Grapes); // true
value = value.Add(SomeType.Oranges);
value.Has(SomeType.Oranges); // true
value = value.Remove(SomeType.Grapes);
value.Has(SomeType.Grapes); // false
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal