把C语言中最简单有效的权限管理搬到C#里去

原理: 控制一个整数的二进制的每一位,当它为1时,我们认为他拥有权限,当为0时,认为他无权限,就这么简单
注意:这不是什么创新

废话不多说,直接上代码

 

public   enum  Permission
ExpandedBlockStart.gifContractedBlock.gif
{
     新建 
= 1,
     删除 
= 2,
     修改 
= 4,
    保留权限1 
= 8,
    保留权限2 
= 16,
    保留权限3 
= 32,
    保留权限4 
= 64,
    保留权限5 
= 128
    
}

public   class  PSolution
ExpandedBlockStart.gifContractedBlock.gif
{
ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
    
/// 原始权限
    
/// </summary>

    int pNum;
    
public int PNum
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
ExpandedSubBlockStart.gifContractedSubBlock.gif        
get return pNum; }
ExpandedSubBlockStart.gifContractedSubBlock.gif        
set { pNum = value; }
    }


    
public PSolution(int a)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        
if (a < 0 || a > 255)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
throw new ArgumentException("参数值必须大于0且小于255");
        }


        pNum 
= a;
    }


ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
    
/// 清除指定的权限
    
/// </summary>

    public void cleanBit(Permission p)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        pNum 
&= ~((int)p);
    }


ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
    
/// 设置指定的权限
    
/// </summary>

    public void setBit(Permission p)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        pNum 
|= ((int)p);
    }


ExpandedSubBlockStart.gifContractedSubBlock.gif    
/**//// <summary>
    
/// 检查是否拥有指定的权限
    
/// </summary>

    public bool checkBit(Permission p)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        
int bTemp = pNum >> Convert.ToInt16(System.Math.Log((double)p,2d));
        
if ((bTemp & 0x01== 1)
            
return true;

        
return false;
    }

}

转载于:https://www.cnblogs.com/scroot/archive/2008/07/22/1248569.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值