美文网首页
C# 枚举运用"位"操作和"或"操作

C# 枚举运用"位"操作和"或"操作

作者: 某人在 | 来源:发表于2019-07-05 20:38 被阅读0次

https://www.cnblogs.com/xachary/p/3897708.html

定义:
/// <summary>
/// The js function type(the same as name).
/// </summary>
[Flags]
public enum CallJSFunctionTypes
{
None = 0,
ResetFixedBar = 1 << 1,
ResetRequiredField = 1 << 2,
SetValidateSuccessTextBoxStyle = 1 << 3,
SetValidateFailTextBoxStyle = 1 << 4,
ResizeSummary = 1 << 5
//,All = 1 << 6 - 1
}

使用:
//可以先给个初始值.
CallJSFunctionTypes JSFunctions = CallJSFunctionTypes.None;

//...

//可以这样赋值, 想包含什么意义, 就用"与"叠加.
JSFunctions = CallJSFunctionTypes.ResetFixedBar | CallJSFunctionTypes.ResetRequiredField | CallJSFunctionTypes.ResizeSummary;

//...

//判断是否包含某个意义
if ((JSFunctions & CallJSFunctionTypes.ResetFixedBar) == CallJSFunctionTypes.ResetFixedBar)
{
//Do something.
}

原理:

Int32 是 4字节32位二进制
None = 0,

即 0000 0000 0000 0000 0000 0000 0000 0000

ResetFixedBar = 1 << 1,

即 0000 0000 0000 0000 0000 0000 0000 0001 -> 0000 0000 0000 0000 0000 0000 0000 0010

ResetRequiredField = 1 << 2,

即 0000 0000 0000 0000 0000 0000 0000 0001 -> 0000 0000 0000 0000 0000 0000 0000 0100

SetValidateSuccessTextBoxStyle = 1 << 3,

即 0000 0000 0000 0000 0000 0000 0000 0001 -> 0000 0000 0000 0000 0000 0000 0000 1000

SetValidateFailTextBoxStyle = 1 << 4,

即 0000 0000 0000 0000 0000 0000 0000 0001 -> 0000 0000 0000 0000 0000 0000 0001 0000

ResizeSummary = 1 << 5,

即 0000 0000 0000 0000 0000 0000 0000 0001 -> 0000 0000 0000 0000 0000 0000 0010 0000

All = 1 << 6 - 1

即 0000 0000 0000 0000 0000 0000 0010 0000 -> 0000 0000 0000 0000 0000 0000 0011 1111

赋值的时候:

ResetFixedBar|SetValidateSuccessTextBoxStyle|ResizeSummary

0000 0000 0000 0000 0000 0000 0000 0010

0000 0000 0000 0000 0000 0000 0000 1000

0000 0000 0000 0000 0000 0000 0010 0000


0000 0000 0000 0000 0000 0000 0010 1010

判断的时候:

判断有没有ResetFixedBar, 相"与"(&)

0000 0000 0000 0000 0000 0000 0010 1010

0000 0000 0000 0000 0000 0000 0000 0010


0000 0000 0000 0000 0000 0000 0000 0010 即ResetFixedBar, 即存在ResetFixedBar

判断有没有ResetRequiredField, 相"与"(&)

0000 0000 0000 0000 0000 0000 0010 1010

0000 0000 0000 0000 0000 0000 0000 0100


0000 0000 0000 0000 0000 0000 0000 0000 即不存在ResetFixedBar

相关文章

网友评论

      本文标题:C# 枚举运用"位"操作和"或"操作

      本文链接:https://www.haomeiwen.com/subject/xmjyhctx.html