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