Bởi vì họ là sức mạnh của hai và tôi có thể làm điều này:
var permissions = Permissions.Read | Permissions.Write;
Và có lẽ sau này ...
if( (permissions & Permissions.Write) == Permissions.Write )
{
// we have write access
}
Đó là một trường bit, trong đó mỗi bit set tương ứng với một số quyền (hoặc bất cứ giá trị liệt kê nào tương ứng một cách hợp lý). Nếu những điều này được xác định là 1, 2, 3, ...
bạn sẽ không thể sử dụng các toán tử bitwise theo cách này và nhận được kết quả có ý nghĩa. Để tìm hiểu sâu hơn ...
Permissions.Read == 1 == 00000001
Permissions.Write == 2 == 00000010
Permissions.Delete == 4 == 00000100
Chú ý một mẫu ở đây? Bây giờ nếu chúng ta lấy ví dụ ban đầu của tôi, tức là,
var permissions = Permissions.Read | Permissions.Write;
Sau đó...
permissions == 00000011
Xem? Cả bit Read
và Write
bit đều được đặt và tôi có thể kiểm tra độc lập (Cũng lưu ý rằng Delete
bit không được đặt và do đó giá trị này không truyền đạt quyền xóa).
Nó cho phép một người lưu trữ nhiều cờ trong một trường bit.