Opérations au niveau du bit de l'énumération des drapeaux en C#
Les opérateurs au niveau du bit en C# opèrent sur des bits individuels dans des nombres entiers, permettant des opérations efficaces et polyvalentes sur les champs de bits. Lorsqu'elles sont appliquées à l'énumération [Flags]
, ces opérations fournissent des outils puissants pour gérer des configurations d'indicateurs complexes.
Énumération des drapeaux
[Flags]
Une énumération est un type spécial d'énumération où chaque valeur représente une position de bit. Plusieurs valeurs peuvent être combinées à l'aide d'opérateurs au niveau du bit en appliquant l'attribut [Flags]
.
Opérations sur les bits
Définir le bit :
<code class="language-csharp">flags |= FlagsEnum.Bit4; // 设置位4</code>
L'opérateur OU au niveau du bit (|) définit le bit spécifié sur 1. Dans cet exemple, FlagsEnum.Bit4
correspond à la position du bit 4, qui est définie sur 1.
Bit clair :
<code class="language-csharp">flags &= ~FlagsEnum.Bit4; // 清除位4</code>
L'opérateur ET au niveau du bit (&) est utilisé avec la valeur inversée (~) pour remettre le bit spécifié à 0.
Position du commutateur :
<code class="language-csharp">flags ^= FlagsEnum.Bit4; // 切换位4</code>
L'opérateur XOR au niveau du bit (^) fait basculer le bit spécifié entre 0 et 1.
Position d'essai :
<code class="language-csharp">flags & FlagsEnum.Bit4 // 检查位4是否已设置</code>
L'opérateur ET au niveau du bit (sans ~) renvoie une valeur différente de zéro si le bit spécifié est 1, indiquant que le bit est défini.
Utilisez des méthodes d'extension personnalisées pour améliorer les fonctionnalités
Pour simplifier l'utilisation des opérations au niveau du bit sur les énumérations, vous pouvez définir des méthodes d'extension :
<code class="language-csharp">namespace Enum.Extensions { public static class EnumerationExtensions { public static bool Has<T>(this System.Enum type, T value) { return (((int)(object)type & (int)(object)value) == (int)(object)value); } // ...此处添加其他扩展方法 } }</code>
Has()
Les méthodes d'extension offrent un moyen pratique de vérifier si un bit spécifique est défini.
Exemple d'utilisation :
<code class="language-csharp">SomeType value = SomeType.Grapes; bool isGrapes = value.Has(SomeType.Grapes); // true</code>
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!