& 是 位与 符号;百度 "位与"
这种条件表达式一般是用做某种设置的判断;
该设置有多条,且可多选,便可以用这种方式;
其特点是:
设置中每一个选项的值都是2的N次冥,其实就是2进制中每一位上所代表的值, 如
0 1 2 4 8 16 32 64 128(分别对应2进制中第一位到第八位的值)
这样如果你任意做了多选; 因为在2进制中这些数是互不干扰的; 所以可以直接用 位或 做组合,用位与做判断;
例子:
// 我一般用这种数据,会把他们做成枚举
enum Setting
{
NONE = 0,ST1 = 1, ST2 = 2, ST3=4, ST4=8
}
// 赋值,可用位或将多个选项组合在一起
Setting s = Setting.ST1 | Setting.ST2.2;
// 判断,逐个判断(既然用这种数据结构,一般该设置就是允许多选的,否则没必要)
if(s & Setting.ST1 == Setting.ST1)
{
// 设置了ST1 要做的事
}
if(s & Setting.ST2 == Setting.ST2)
{
// 设置了ST2 要做的事
}
if(s & Setting.ST3 == Setting.ST3)
{
// 设置了ST3 要做的事
}
if(s & Setting.ST4 == Setting.ST4)
{
// 设置了ST4 要做的事
}