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

Bagaimana untuk Melakukan Operasi Bitwise pada C# [Flags] Enums?

Patricia Arquette
Patricia Arquetteasal
2025-01-13 11:37:44719semak imbas

How to Perform Bitwise Operations on C# [Flags] Enums?

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!

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