Karena mereka adalah kekuatan dua dan saya dapat melakukan ini:
var permissions = Permissions.Read | Permissions.Write;
Dan mungkin nanti ...
if( (permissions & Permissions.Write) == Permissions.Write )
{
// we have write access
}
Ini adalah bidang bit, di mana setiap set bit sesuai dengan beberapa izin (atau apa pun nilai yang disebutkan secara logis sesuai dengan). Jika ini didefinisikan sebagai 1, 2, 3, ...
Anda tidak akan dapat menggunakan operator bitwise dengan cara ini dan mendapatkan hasil yang bermakna. Untuk menggali lebih dalam ...
Permissions.Read == 1 == 00000001
Permissions.Write == 2 == 00000010
Permissions.Delete == 4 == 00000100
Perhatikan polanya di sini? Sekarang jika kita mengambil contoh asli saya, yaitu,
var permissions = Permissions.Read | Permissions.Write;
Kemudian...
permissions == 00000011
Lihat? Baik bit Read
dan Write
sudah diatur, dan saya bisa memeriksanya secara independen (Perhatikan juga bahwa Delete
bit tidak diatur dan karena itu nilai ini tidak memberikan izin untuk menghapus).
Hal ini memungkinkan seseorang untuk menyimpan beberapa flag dalam satu bidang bit.