您的位置:首页 > 编程语言

结合枚举类型和异或操作实现开关 --使代码更清晰

2007-09-11 22:27 295 查看
可以使用一个整数代表32个独立的布尔标记,综合用枚举类型和位的异或操作可以方便的设置每个布尔标记,用来作为开关。每个枚举值代表一个开关true or false。

标记开关主要用在权限系统中,用来表现一个用户具有何种权限。

示例如下:

public enum Bitwise : int

{

Setting1 = 1, //0000 0001

Setting2 = 2, //0000 0010

Setting3 = 4, //0000 0100

Setting4 = 8, //0000 1000

Setting5 = 16, //0001 0000

Setting6 = 32, //0010 0000

Setting7 = 64, //0100 0000

Setting8 = 128, //1000 0000

};

该结构体具有设置获取指定Bitwise值的方法

public struct IntAsBits

{

int settings;

public IntAsBits(Bitwise settings)

{

this.settings = (int)settings;

}

public bool this[int index]

{

get

{ //check the bit at index and return true or false

return (settings & (1 << index)) != 0;

}

set

{

if (value)

settings |= (1 << index); //turns the bit at index on

else

settings &= ~(1 << index); //turns the bit at index off

}

}

}

具体使用 可以方便的获取和设置指定二进制的值

Bitwise settings = Bitwise.Setting2 | Bitwise.Setting4 | Bitwise.Setting8;

IntAsBits bits = new IntAsBits(settings);

for(int i=0;i<8;i++)

{

Console.WriteLine(bits[i]);

}

优点:效率高 直观 便捷

摘自:http://dotnetslackers.com/articles/net/Bitwise_Operations_with_Enumerations.aspx

Created by jecray
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: