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
Lepaskan: 2025-01-13 11:44:43
asal
890 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

Togol bit tertentu

Untuk menukar bit tertentu kepada nilai bertentangannya, gunakan operator XOR bitwise (^).

<code class="language-csharp">flags ^= FlagsEnum.Bit4; // 切换位 4</code>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan