之前处理数据状态时,多种不同意义的状态,一般要不是分多个字段保存,要不就是保存的数值求mod取余,同事分享了个位运算方式保存状态的方式:

 

 _Default : System.Web.UI.Page 
{

    enum XType
    {
        
/* 枚举定义所需要使用的状态 */
        T0 
= 1,
        T1 
= 2,
        T2 
= 4,
        T3 
= 8,
        T4 
= 16,
        T5 
= 32,
        T6 
= 64,
        T7 
= 128,
        T8 
= 256
        
//同理 当状态过多时 使用2进制值过大可以选择使用16进制来保存
        
//010,1010,1001,0111,1010
        
//2,  C,9, 7,C
    }

    
protected void Page_Load(object sender, EventArgs e)
    {
        XType xzonghe 
= 0;
        
//使用枚举值 位运算添加多个状态值
        xzonghe = XType.T0 | XType.T1 | XType.T2 | XType.T3;

        
int i = (int)xzonghe;
        
int houlai = 0;
        
if ((i & (int)XType.T2) == (int)XType.T2)//判断该状态是否存在
        {
            
//删除本来多个状态中的其中一个状态,切记先判断该状态是否存在
            houlai = i ^ (int)XType.T2;
        }
        
int new1 = 0;
        
//添加新状态
        new1 = (int)xzonghe | (int)XType.T4;
        
throw new Exception(xzonghe.ToString("F"+ "___" + ((XType)houlai).ToString("F"+ "___" + ((XType)new1).ToString("F"+ "___" + new1);
    }
}

 

缺点是在数据库中维护数据时,由于保存的位运算后加出来的状态值,可能不是很直观,需要转化出来!

相关文章:

  • 2021-07-15
  • 2021-09-24
  • 2022-12-23
  • 2021-07-07
  • 2022-12-23
  • 2021-10-18
  • 2021-10-25
  • 2021-07-26
猜你喜欢
  • 2022-02-17
  • 2021-06-03
  • 2022-01-26
  • 2022-01-05
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案