我对位标识的使用

位标识确实是特别好用,可以用它来设置权限。
eg:一个八位的二进制去设置一系列的操作,初始化时:00000000,从第一步操作开始,每完成一次操作就使对应的位由0变为1。
00000001 第一步完成
00000011 第一步和第二步完成
00000111 第一步和第二步和第三步都完成
…… 当所有的位都为1时就表示所有的操作都已经完成

但是当第二步完成后第一步也可以修改的情况下,此时即00000010。我们可以使用枚举操作设置完成的步骤。
//测试数据录入状态的标志
//下面的枚举值从低位开始标志8个录入项

public enum DataState
{
step1= 1,
step2= 2,
step3= 4,
step4= 8,
step5= 16,
step6= 32,
step7= 64,
step8= 128
}
定义属性 public DataState MyDataState{get;set}

当为每一步条件进行判断,满足条件时,便可使对应位由0设置为1。

this.MyDataState=this.MyDataState|DataState.step1;

如果修改后的数据不满足此步要求的条件,就要将对应的位设置为0。

this.MyDataState=this.MyDataState&(`DataState.step1);

最后可保存到数据库中。

以上只是个人理解,请多多指教。
原文地址:https://www.cnblogs.com/Cindys/p/1997491.html