按位或组合权限串ITeye - 凯发娱乐

按位或组合权限串ITeye

2019-01-11 05:48:34 | 作者: 灵珊 | 标签: 按位,指定,摘要 | 浏览: 352

// 指定只应考虑在所供给类型的层次结构等级上声明的成员。 不考虑承继成员。 DeclaredOnly = 2, // 摘要: // 指定实例成员将包含在查找中。 Instance = 4, // 摘要: // 指定静态成员将包含在查找中。 Static = 8, // 摘要: // 指定公共成员将包含在查找中。 Public = 16, // 摘要: // 指定非公共成员将包含在查找中。 NonPublic = 32, // 摘要: // 指定应回来层次结构上的公共静态成员和受维护的静态成员。 不回来承继类中的私有静态成员。 静态成员包含字段、办法、事情和特点。 不回来嵌套类型。 FlattenHierarchy = 64, // 摘要: // 指定要调用一个办法。 它不能是结构函数或类型初始值设定项。 InvokeMethod = 256, // 摘要: // 指定“反射”应该创立指定类型的实例。 调用与给定参数匹配的结构函数。 疏忽供给的成员名。 假如未指定查找类型,将运用 (Instance |Public)。 // 调用类型初始值设定项是不可能的。 CreateInstance = 512, // 摘要: // 指定应回来指定字段的值。 GetField = 1024, // 摘要: // 指定应设置指定字段的值。 SetField = 2048, // 摘要: // 指定应回来指定特点的值。 GetProperty = 4096, // 摘要: // 指定应设置指定特点的值。 关于 COM 特点,指定此绑定标志与指定 PutDispProperty 和 PutRefDispProperty 是等效的。 SetProperty = 8192, // 摘要: // 指定应调用 COM 目标的 PROPPUT 成员。 PROPPUT 指定运用值的特点设置函数。 假如特点一同具有 PROPPUT 和 PROPPUTREF,并且需求区别调用哪一个,请运用 // PutDispProperty。 PutDispProperty = 16384, // 摘要: // 指定应调用 COM 目标的 PROPPUTREF 成员。 PROPPUTREF 指定运用引证而不是值的特点设置函数。 假如特点一同具有 PROPPUT // 和 PROPPUTREF,并且需求区别调用哪一个,请运用 PutRefDispProperty。 PutRefDispProperty = 32768, // 摘要: // 指定供给参数的类型有必要与对应形参的类型彻底匹配。 假如调用方供给一个非空 Binder 目标,则“反射”将引发反常,由于这意味着调用方正在供给的 // BindToXXX 完成将选取恰当的办法。 ExactBinding = 65536, // 摘要: // 未完成。 SuppressChangeType = 131072, // 摘要: // 回来其参数计数与供给参数的数目匹配的成员集。 此绑定标志用于所带参数具有默认值的办法和带变量参数 (varargs) 的办法。 此标志应只与 System.Type.InvokeMember(System.String,System.Reflection.BindingFlags,System.Reflection.Binder,System.Object,System.Object[],System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[]) // 一同运用。 OptionalParamBinding = 262144, // 摘要: // 在 COM 互操作中用于指定能够疏忽成员的回来值。 IgnoreReturn = 16777216, }

 

 public enum DataFormType
 /// summary 
 /// 查找
 /// /summary 
 Search=0,
 /// summary 
 /// 改写
 /// /summary 
 Refresh=2,
 /// summary 
 /// 添加
 /// /summary 
 Add=4,
 /// summary 
 /// 修正
 /// /summary 
 Update=8,
 /// summary 
 /// 删去
 /// /summary 
 Delete=16,
 /// summary 
 /// 导出 
 /// /summary 
 Export=32,
 /// summary 
 /// 导入
 /// /summary 
 Import=64
 }

 运用

.SetFormType(Fap.Controls.JqGrid.Enums.DataFormType.Add | Fap.Controls.JqGrid.Enums.DataFormType.Delete | Fap.Controls.JqGrid.Enums.DataFormType.Update)

 按位或

原理

 榜首,2的8位二进制值为00000010

                 4的8位二进制值为00000100

                8的8位二进制值为00001000

第二,当对8和4进行按位或操作后,成果为:

                 4|8 = 12

                 00000100 |00001000 = 00001100

              为什么会是这样呢?在进行按位或操作时 00000001|00000001=00000001   ;00000001|00000000=1 ;00000000|00000000=00000000

              也便是说除了0|0成果是0外,其它运算成果的都是1

             所以    00000100 |00001000 = 00001100

            也就说上面的 purview = k2|k3 的二进制值成果是 purview =00000100 |00001000 =00001100了

第三,当对8和4进行按位与操作后,成果为:

               4 8=0

            00000100 00001000 = 00000000

              相同为什么会是这样呢?在进行按位与操作时 00000001 00000001=00000001   ;00000001 00000000=00000000 ;00000000 00000000=00000000

            也便是说除了1 1成果是1外,其它运算成果的都是0

            所以 00000100 00001000 = 00000000

            上面的if((purview k1) 0)的成果便是 00001100 00000010 =00000000 也便是(0 0)=false

           相同if((purview k2) 0)的成果便是 00001100 00000100 =00000100=4=k2 也便是 (4 0)=true

 

这样咱们就理解组合权限串和判别权限的原理了,说白了便是对2N次方数的按位与和按位或。

 

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表凯发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章