C#枚举中的位运算权限分配浅谈
?常用的位運算主要有與(&),?或(|)和非(~),?比如:
?
1 & 0 = 0, 1 | 0 = 1, ~1 = 0
?
在設計權限時,?我們可以把權限管理操作轉換為C#位運算來處理.
?
第一步,?先建立一個枚舉表示所有的權限管理操作:
public enum Permissions
{
Insert = 1,
Delete = 2,
Update = 4,
Query = 8
}
?
枚舉的每一項值,?我們用2的n次方來賦值,?這樣表示成二進制時剛好是1 = 0001, 2 = 0010, 4 = 0100, 8 = 1000等,?每一位表示一種權限, 1表示有該權限, 0表示沒有.
?
接下來是權限的運算:
?
1.?權限的加法,?使用或運算來實現.?我們知道,?0001 | 0100 = 0101,?這樣就表示同時具有第一位和第三位的權限管理了,?枚舉表示為:
?
Permissions per = Permissions.Insert | Permissions.Update
?
2.?權限的減法,?使用與運算+非運算來實現,?如上面要去掉Insert權限,?操作為:
?
Permissions per &=?~Permissions.Insert即是?0101 & ~0001 = 0101 & 1110 = 0100
?
3.?權限的判斷,?使用與運算,?當判斷用一用戶是否具有該操作權限時,?要把用戶的的權限與操作權限進行與運算,?如果得到的結果仍是操作權限管理,?則表示用戶具有該權限:
?
Permissions per = Permissions.Insert | Permissions.Update;
if(per & PermissionsPermissions.Insert = Permissions.Insert)
{
//有操作權限
}
?
比較過程為?0101 & 0001 = 0001, 0001的0位用與C#位運算把其它位都置成0,?變成只比較1的這一位.
轉載于:https://www.cnblogs.com/yy1234/p/9585349.html
總結
以上是生活随笔為你收集整理的C#枚举中的位运算权限分配浅谈的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python第一堂课
- 下一篇: c# char unsigned_dll