我有很多布尔变量如下:
Boolean A;
Boolean B;
Boolean C;
Boolean D;
Boolean E;
Boolean F;
...
我想确保所有这些都是假的,或者最多只有一个是真的。
如果不使用大量的IF,有没有快速的方法呢?
答案 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为零