Gunakan penghitungan C# [Bendera] untuk melaksanakan operasi bit
Enumerasi dengan atribut [Flags] membenarkan manipulasi bit individu dalam perwakilan integer asas. Ini membolehkan perwakilan ringkas topeng bit, di mana setiap bit mewakili bendera atau pilihan tertentu.
Set bit
Untuk menetapkan sedikit dalam penghitungan [Bendera], gunakan operator bitwise ATAU (|):
<code class="language-csharp">flags = flags | FlagsEnum.Bit4; // 设置位 4</code>
Kedudukan ujian
Untuk menguji sama ada bit ditetapkan, gunakan operator bitwise AND (&):
<code class="language-csharp">bool isBit4Set = (flags & FlagsEnum.Bit4) != 0;</code>
Togol kedudukan
Untuk menogol sedikit (tetapkan jika tidak ditetapkan, kosongkan jika ditetapkan), gunakan operator XOR bitwise (^):
<code class="language-csharp">flags = flags ^ FlagsEnum.Bit4; // 切换位 4</code>
Sedikit jelas
Untuk mengosongkan bit, gunakan operator AND bitwise (&) dan pelengkap topeng bit:
<code class="language-csharp">flags = flags & ~FlagsEnum.Bit4; // 清除位 4</code>
Kaedah sambungan tersuai
Untuk kemudahan, kaedah sambungan berikut boleh ditakrifkan untuk memudahkan operasi ini:
<code class="language-csharp">public static bool Has<T>(this System.Enum type, T value) { return (((int)(object)type & (int)(object)value) == (int)(object)value); } public static bool Is<T>(this System.Enum type, T value) { return (int)(object)type == (int)(object)value; } public static T Add<T>(this System.Enum type, T value) { return (T)(object)(((int)(object)type | (int)(object)value)); } public static T Remove<T>(this System.Enum type, T value) { return (T)(object)(((int)(object)type & ~(int)(object)value)); }</code>
Kaedah sambungan ini boleh digunakan seperti berikut:
<code class="language-csharp">SomeType value = SomeType.Grapes; bool isGrapes = value.Is(SomeType.Grapes); // true bool hasGrapes = value.Has(SomeType.Grapes); // true value = value.Add(SomeType.Oranges); value = value.Add(SomeType.Apples); value = value.Remove(SomeType.Grapes); bool hasOranges = value.Has(SomeType.Oranges); // true bool isApples = value.Is(SomeType.Apples); // false bool hasGrapes = value.Has(SomeType.Grapes); // false</code>
Atas ialah kandungan terperinci Bagaimana untuk Melakukan Operasi Bitwise pada C# [Flags] Enums?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!