检查许多布尔值

时间:2014-09-02 21:03:27

标签: c#

我有很多布尔变量如下:

Boolean A;
Boolean B;
Boolean C;
Boolean D;
Boolean E;
Boolean F;
...

我想确保所有这些都是假的,或者最多只有一个是真的。

如果不使用大量的IF,有没有快速的方法呢?

4 个答案:

答案 0 :(得分:15)

是。将所有布尔值放入列表中,然后使用.All().Any()扩展方法。

var options = new List<bool>{A, B, C, D, E, F, etc.};
var allAreFalse = options.All(b => !b);
var atLeastOneIsTrue = options.Any(b => b);
var moreThanOneIsTrue = options.Where(b => b).Skip(1).Any();

PS - 您可能实际上并不想首先将所有这些布尔值声明为单独的变量。像这样的代码通常表示您将数据表示为代码,并且应该使用数据结构来表示和操作这些值。

答案 1 :(得分:6)

将它们添加到列表中并计算真实值:

var lst = new[] { A, B, C, D, E };
var res = lst.Count(x=>x) <= 1;

答案 2 :(得分:0)

boolean[] bools = new boolean[...];

// add all bools to list

if (!bools.All()) {
    // All are false
}
if (bools.Any()){
    // One or more are true
}

答案 3 :(得分:0)

 unsigned long var64 = (X & A<<1 & B<<2 & C<<3 .... Z <<63)+1
如果os和project以及cpu是64位x64;

,如果全部为true,则

使var64为零