原理: 控制一个整数的二进制的每一位,当它为1时,我们认为他拥有权限,当为0时,认为他无权限,就这么简单。
 public enum Permission
public enum Permission {
{ 新建 = 1,
     新建 = 1, 删除 = 2,
     删除 = 2, 修改 = 4,
     修改 = 4, 保留权限1 = 8,
    保留权限1 = 8, 保留权限2 = 16,
    保留权限2 = 16, 保留权限3 = 32,
    保留权限3 = 32, 保留权限4 = 64,
    保留权限4 = 64, 保留权限5 = 128
    保留权限5 = 128 
     }
} public class PSolution
public class PSolution {
{ /**//// <summary>
    /**//// <summary> /// 原始权限
    /// 原始权限 /// </summary>
    /// </summary> int pNum;
    int pNum; public int PNum
    public int PNum {
    { get { return pNum; }
        get { return pNum; } set { pNum = value; }
        set { pNum = value; } }
    }
 public PSolution(int a)
    public PSolution(int a) {
    { if (a < 0 || a > 255)
        if (a < 0 || a > 255) {
        { throw new ArgumentException("参数值必须大于0且小于255");
            throw new ArgumentException("参数值必须大于0且小于255"); }
        }
 pNum = a;
        pNum = a; }
    }
 /**//// <summary>
    /**//// <summary> /// 清除指定的权限
    /// 清除指定的权限 /// </summary>
    /// </summary> public void cleanBit(Permission p)
    public void cleanBit(Permission p) {
    { pNum &= ~((int)p);
        pNum &= ~((int)p); }
    }
 /**//// <summary>
    /**//// <summary> /// 设置指定的权限
    /// 设置指定的权限 /// </summary>
    /// </summary> public void setBit(Permission p)
    public void setBit(Permission p) {
    { pNum |= ((int)p);
        pNum |= ((int)p); }
    }
 /**//// <summary>
    /**//// <summary> /// 检查是否拥有指定的权限
    /// 检查是否拥有指定的权限 /// </summary>
    /// </summary> public bool checkBit(Permission p)
    public bool checkBit(Permission p) {
    { int bTemp = pNum >> Convert.ToInt16(System.Math.Log((double)p,2d));
        int bTemp = pNum >> Convert.ToInt16(System.Math.Log((double)p,2d)); if ((bTemp & 0x01) == 1)
        if ((bTemp & 0x01) == 1) return true;
            return true;
 return false;
        return false; }
    } }
}
 
                     
                    
                 
                    
                 
        

 
     
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号