C#学习笔记-----C#枚举中的位运算权限分配
2015-09-12 17:04
761 查看
一、基础知识
什么是位运算?
用二进制来计算,1&2:这就是位运算,其实它是将0001与0010做位预算 得到的结果是 0011,也就是3
2.位预算有多少种?(我们就将几种我们权限中会用到的)
& 与运算 1&0=0 1&1=1 0&0=0
| 或运算 1|1=1 1|0=1 0|0=0
~ 非运算 ~1=0 ~0=1
二、如何与权限关联
1、逻辑是什么?
其实逻辑很简单,我们将每一位表示一种权限或一种枚举,1010(1代表具有当前位的权限;0代表不具有当前位的权限)
动作:0001 喜剧:0010 依次类推,每个枚举值必须是2的n次方
2、如何做运算?
叠加: 如果一部电影的类型即是 动作,也是喜剧
var category= Category.Motion|Category.Comedy =0011(3)
减法:如果要将这部电影,去掉喜剧类型
category&= ~Category.Comedy
0011&=~0010 0011&=1101 0001(动作)
判断:判断一部电影是否是动作片
(category& Category.Motion)==Category.Motion
什么是位运算?
用二进制来计算,1&2:这就是位运算,其实它是将0001与0010做位预算 得到的结果是 0011,也就是3
2.位预算有多少种?(我们就将几种我们权限中会用到的)
& 与运算 1&0=0 1&1=1 0&0=0
| 或运算 1|1=1 1|0=1 0|0=0
~ 非运算 ~1=0 ~0=1
二、如何与权限关联
1、逻辑是什么?
其实逻辑很简单,我们将每一位表示一种权限或一种枚举,1010(1代表具有当前位的权限;0代表不具有当前位的权限)
[FlagsAttribute] public enum Category { [Description("动作")] Motion = 1, [Description("喜剧")] Comedy = 2, [Description("爱情")] Love = 4, [Description("科幻")] Science = 8, [Description("奇幻")] Queer = 16, [Description("灾难")] Calamity = 32, [Description("恐怖")] Dracula = 64, [Description("纪录")] Documentary = 128, [Description("犯罪")] Crime = 256, [Description("战争")] War = 512, [Description("冒险")] Adventure = 1024, [Description("动画")] Cartoon = 2048, [Description("剧情")] Feature = 4096, [Description("其他")] Other = 8192 }
动作:0001 喜剧:0010 依次类推,每个枚举值必须是2的n次方
2、如何做运算?
叠加: 如果一部电影的类型即是 动作,也是喜剧
var category= Category.Motion|Category.Comedy =0011(3)
减法:如果要将这部电影,去掉喜剧类型
category&= ~Category.Comedy
0011&=~0010 0011&=1101 0001(动作)
判断:判断一部电影是否是动作片
(category& Category.Motion)==Category.Motion
相关文章推荐
- C#中复制数组
- C#判断字符串中是否包含一个子字符串是可以直接使用Contains()方法
- C# ListView用法详解 很完整
- 【C#】初识c#
- C#黑白棋制作~
- C#黑白棋制作
- C#实现程序等待延迟执行的方法
- C#实现控制摄像头的类
- C#禁止textbox复制、粘贴、剪切及鼠标右键的方法
- [C#]二维码(QR Code)生成与解析
- C# get post区别
- C# get post区别
- C#修饰符
- c# 窗体最小化后截图实现
- C#压缩图片时保留原始的Exif信息
- Part 98 Anonymous methods in c#
- C#陷阱之构造函数调用虚方法
- CSharpGL(5)解析3DS文件并用CSharpGL渲染
- C#使用System.xml.linq来生成XML文件
- Part 86 to 88 Talking about Multithreading in C#