У C# можна виконувати логічні операції над цілими об'єктами за бітами. Значення логічної операції за бітом полягає в тому, що кожен біт об'єкта, який оперується, бере по черзі, а логічний результат кожного біта — це кожен біт результату. Оператори бітової логіки, підтримувані C#, показані на наступному рисунку:
Базове проєктування дозволів:
<summary>
///權限列舉 </summary> [Атрибут прапорів] publicenumPermissions
{ Опис («Не налаштовано»)] Немає=0, [Опис («Створити»)] Create=1, [Опис ("Читати")] Read=2, [Опис ("Оновлення")] Оновлення=4, [Опис («Видалити»)] Видалити=8, [Опис («Усі функції»)] All=Створити| Читати| Оновлення| Видалити
}
Техніка 1: Використовувати значення ступеня 2 як перелік для майбутніх бітових операцій (&AND, |OR, ^XOR).
Порада 2: Додайте нову дію дозволу до існуючого дозволу. (Операційна операція)
Permissionspermissionallow=Permissions.None; дозвіл=дозвіл| Дозволи. Створити; MessageBox.Show(permission. ToString()); Результат:Створити
Порада 3: Додайте тег [FlagsAttribute]
Permissionspermissionallow=Permissions.None; дозвіл=дозвіл| Дозволи. Створити; MessageBox.Show(permission. ToString()); Result:Create([FlagsAttribute] не впливає на результат)
дозвіл=дозвіл| Дозволи. Читайте; MessageBox.Show(permission. ToString()); Результат: 3 ([Атрибут прапорів] не додано) Result:Create,Read (додати [FlagsAttribute])
Порада 4: Видаліть певну дію дозволу з існуючого дозволу. (XOR та AND комп'ютерні застосування)
Permissionspermissionallow=Permissions.None; дозвіл=дозвіл| Дозволи. Створити; MessageBox.Show(permission. ToString()); Результат:Створити
дозвіл=дозвіл| Дозволи. Читайте; дозвіл=дозвіл| Authors.Update; MessageBox.Show(permission. ToString()); Результат: Створити, Прочитати, Оновити
permission=(permission&(Permissions.All^Permissions.Read)); MessageBox.Show(permission. ToString()); Результат:Create,Update
Порада 5: Визначте, чи маєте ви певний дозвіл у поточному дозволі (І в операції)
Permissionspermissionallow=Permissions.None; дозвіл=дозвіл| Дозволи. Створити; MessageBox.Show(permission. ToString()); Результат:Створити
дозвіл=дозвіл| Дозволи. Читайте; дозвіл=дозвіл| Authors.Update; MessageBox.Show(permission. ToString()); Результат: Створити, Прочитати, Оновити
permission=(permission&(Permissions.All^Permissions.Read)); MessageBox.Show(permission. ToString()); Результат:Create,Update
boolIsCreatable=false; if((permission&Permissions.Create)==Permissions.Createate)
{ IsCreaable=true;
} інше
{ IsCreatable=хибне;
} MessageBox.Show(IsCreatable.ToString()); Результат: Правда
|