Di C#, Anda dapat melakukan operasi logis pada objek bilangan bulat demi bit. Arti dari operasi logis demi bit adalah bahwa setiap bit dari objek yang akan dioperasikan diambil secara bergantian, dan hasil operasi logis dari setiap bit adalah setiap bit dari nilai hasil. Operator logika bit yang didukung oleh C# ditunjukkan pada gambar berikut:
Desain izin dasar:
<summary>
///權限列舉 </summary> [Atribut Bendera] publicenumIzin
{ Deskripsi("Tidak dikonfigurasi")] Tidak ada = 0, [Deskripsi("Buat")] Buat=1, [Deskripsi("Baca")] Baca = 2, [Deskripsi("Pembaruan")] Pembaruan=4, [Deskripsi("Hapus")] hapus = 8, [Deskripsi("Semua Fitur")] Semua=Buat| Baca| Pembaruan| Hapus
}
Teknik 1: Gunakan nilai pangkat 2 sebagai nilai pencacahan untuk operasi bit di masa mendatang (&AND, |OR, ^XOR).
Tip 2: Tambahkan tindakan izin baru ke izin yang ada. (ATAU Operasi)
permissionspermission=permissions.none; izin=izin| Izin.Buat; MessageBox.Show(izin. ToString()); Hasil:Buat
Tip 3: Tambahkan tag [FlagsAttribute]
permissionspermission=permissions.none; izin=izin| Izin.Buat; MessageBox.Show(izin. ToString()); Result:Create([FlagsAttribute] tidak memengaruhi hasil)
izin=izin| Izin.Baca; MessageBox.Show(izin. ToString()); Hasil: 3 ([FlagsAttribute] tidak ditambahkan) Hasil:Buat,Baca (tambahkan [FlagsAttribute])
Tips 4: Hapus tindakan izin tertentu dari izin yang ada. (Aplikasi komputasi XOR dan AND)
permissionspermission=permissions.none; izin=izin| Izin.Buat; MessageBox.Show(izin. ToString()); Hasil:Buat
izin=izin| Izin.Baca; izin=izin| Izin.Pembaruan; MessageBox.Show(izin. ToString()); Hasil:Buat,Baca,Perbarui
permission=(permission&(Permissions.All^Permissions.Read)); MessageBox.Show(izin. ToString()); Hasil:Membuat,Memperbarui
Tip 5: Tentukan apakah Anda memiliki izin tertentu dalam izin saat ini (operasi AND)
permissionspermission=permissions.none; izin=izin| Izin.Buat; MessageBox.Show(izin. ToString()); Hasil:Buat
izin=izin| Izin.Baca; izin=izin| Izin.Pembaruan; MessageBox.Show(izin. ToString()); Hasil:Buat,Baca,Perbarui
permission=(permission&(Permissions.All^Permissions.Read)); MessageBox.Show(izin. ToString()); Hasil:Membuat,Memperbarui
boolIsCreatable=false; if((permission&permissions.create)==Permissions.Create)
{ IsCreatable=true;
} yang lain
{ IsCreatable=false;
} MessageBox.Show(IsCreatable.ToString()); Hasil: Benar
|