Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Melakukan Operasi Bitwise pada Flags Enums dalam C#?
Operasi bitwise bagi penghitungan [Bendera] dalam C#
Apabila menggunakan penghitungan bendera, adalah penting untuk menguasai operasi bit untuk mengurus dan memanipulasi bit individu dengan lancar dalam nilai penghitungan. Helaian cheat ini bertujuan untuk memberikan gambaran ringkas tentang operasi bit biasa dalam C#.
Tetapkan bit tertentu
Untuk menetapkan bit tertentu dalam penghitungan [Bendera], gunakan operator OR bitwise (|). Pertimbangkan contoh berikut:
<code class="language-csharp">FlagsEnum flags = FlagsEnum.None; flags |= FlagsEnum.Bit4; // 设置位 4</code>
Alih keluar bit tertentu
Untuk mengalih keluar bit tertentu, gunakan pengendali AND bitwise dan penolakan bit. Berikut ialah contoh:
<code class="language-csharp">if ((flags & ~FlagsEnum.Bit4) == 0) { // 已移除位 4 }</code>
Togol bit tertentu
Untuk menukar bit tertentu kepada nilai bertentangannya, gunakan operator XOR bitwise (^).
<code class="language-csharp">flags ^= FlagsEnum.Bit4; // 切换位 4</code>
Periksa sama ada bit tertentu ditetapkan
Untuk menentukan sama ada bit tertentu ditetapkan, gunakan pengendali AND bitwise dan kemudian bandingkan.
<code class="language-csharp">if ((flags & FlagsEnum.Bit4) == FlagsEnum.Bit4) { // 设置了位 4 }</code>
Kaedah sambungan tambahan
Melanjutkan kelas System.Enum dengan kaedah tersuai boleh memudahkan lagi operasi bit. Pertimbangkan sambungan berikut:
<code class="language-csharp">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)); }</code>
Kaedah ini menyediakan pintasan yang mudah untuk operasi bitwise:
<code class="language-csharp">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</code>
Atas ialah kandungan terperinci Bagaimana untuk Melakukan Operasi Bitwise pada Flags Enums dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!