Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Melakukan Operasi Bitwise pada Flags Enums dalam C#?

Bagaimana untuk Melakukan Operasi Bitwise pada Flags Enums dalam C#?

Patricia Arquette
Patricia Arquetteasal
2025-01-13 11:44:43885semak imbas

How to Perform Bitwise Operations on Flags Enums in 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn