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

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 (|):

flags = flags | FlagsEnum.Bit4; // 设置位 4
Salin selepas log masuk

Kedudukan ujian

Untuk menguji sama ada bit ditetapkan, gunakan operator bitwise AND (&):

bool isBit4Set = (flags & FlagsEnum.Bit4) != 0;
Salin selepas log masuk

Togol kedudukan

Untuk menogol sedikit (tetapkan jika tidak ditetapkan, kosongkan jika ditetapkan), gunakan operator XOR bitwise (^):

flags = flags ^ FlagsEnum.Bit4; // 切换位 4
Salin selepas log masuk

Sedikit jelas

Untuk mengosongkan bit, gunakan operator AND bitwise (&) dan pelengkap topeng bit:

flags = flags & ~FlagsEnum.Bit4; // 清除位 4
Salin selepas log masuk

Kaedah sambungan tersuai

Untuk kemudahan, kaedah sambungan berikut boleh ditakrifkan untuk memudahkan operasi ini:

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

Kaedah sambungan ini boleh digunakan seperti berikut:

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

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 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