热门逻辑比较一个bool数组与其自身的单个bool结果?

F.A*_*ves 2 .net c# arrays

我有一个看起来像这样的数组:

bool[] array = new bool[4] { true, false, true, true } ;
Run Code Online (Sandbox Code Playgroud)

我想在这个数组的所有元素之间进行AND/OR比较,例如:

AND示例:true AND false AND true AND true

所以我可以得到上面例子中的最终结果,或者:

或者示例:true或false OR true或true

这将在上面的例子中给我真实.

它有一个允许我这样做的数组中的内置方法吗?或者我是否应该在所有元素之间进行迭代并逐一进行比较?

Jon*_*eet 18

根据评论和其他答案,您可以使用LINQ来实现这两个目标.(虽然你没有; farbiondriven的答案绝对可以,但LINQ解决方案可以处理任何问题 ,但它的通用性较差IEnumerable<bool>.)

Any使用标识投影将检测是否有任何元素true,这与OR对所有元素执行逻辑的结果相同.

All使用标识投影将检测是否所有元素都是true,这与AND在所有元素上执行逻辑的结果相同:

bool orResult = array.Any(x => x);
bool andResult = array.All(x => x);
Run Code Online (Sandbox Code Playgroud)

这两个都会短路:如果第一个元素是true,那么Any就不会费心去看后面的元素了,结果肯定是true.同样,如果第一个元素是false,那么All不会费心去看后面的元素,因为结果肯定会false.

但是,您可能需要考虑您希望结果为空数组的内容.Any()将返回false一个空序列,而All在空序列上返回true.这可能是也可能不是您期望或需要的.


ric*_*hej 7

这可以通过linq完成:

var all = array.All(x => x);
var or = array.Any(x => x);
Run Code Online (Sandbox Code Playgroud)