本文介紹C#位運算的處理方法第一步 先建立一個枚舉表示所有的權限管理操作接下來是權限的運算等
常用的位運算主要有與(&) 或(|)和非(~) 比如:
& = | = ~ =
在設計權限時 我們可以把權限管理操作轉換為C#位運算來處理
第一步 先建立一個枚舉表示所有的權限管理操作:
[Flags]
public enum Permissions
{
Insert =
Delete =
Update =
Query =
}
[Flags]表示該枚舉可以支持C#位運算 而枚舉的每一項值 我們用的n次方來賦值 這樣表示成二進制時剛好是 = = = = 等 每一位表示一種權限 表示有該權限 表示沒有
接下來是權限的運算:
權限的加法 使用與運算來實現 我們知道 | = 這樣就表示同時具有第一位和第三位的權限管理了 枚舉表示為:
Permissions per = PermissionsInsert | PermissionsUpdate
權限的減法 使用與運算+非運算來實現 如上面要去掉Insert權限 操作為:
Permissions per &= ~PermissionsInsert即是 & ~ = & =
權限的判斷 使用與運算 當判斷用一用戶是否具有該操作權限時 要把用戶的的權限與操作權限進行與運算 如果得到的結果仍是操作權限管理 則表示用戶具有該權限:
Permissions per = PermissionsInsert | PermissionsUpdate;
if(per & PermissionsPermissionsInsert = PermissionsInsert)
{
//有操作權限
}
比較過程為 & = 的位用與C#位運算把其它位都置成 變成只比較的這一位
From:http://tw.wingwit.com/Article/program/ASP/201311/21866.html