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
Kedudukan ujian
Untuk menguji sama ada bit ditetapkan, gunakan operator bitwise AND (&):
bool isBit4Set = (flags & FlagsEnum.Bit4) != 0;
Togol kedudukan
Untuk menogol sedikit (tetapkan jika tidak ditetapkan, kosongkan jika ditetapkan), gunakan operator XOR bitwise (^):
flags = flags ^ FlagsEnum.Bit4; // 切换位 4
Sedikit jelas
Untuk mengosongkan bit, gunakan operator AND bitwise (&) dan pelengkap topeng bit:
flags = flags & ~FlagsEnum.Bit4; // 清除位 4
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)); }
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
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!