如何对bool数组元素执行全局AND/OR逻辑运算得到单一布尔结果?
嗨,不用自己费劲写遍历啦!C#的LINQ已经帮我们准备好了现成的方法来搞定这种布尔数组的批量逻辑运算:
布尔数组批量AND/OR运算的实现
1. 批量AND运算(所有元素逻辑与)
用Enumerable.All()方法就能实现——这个方法会检查数组里的每一个元素是否都满足指定条件,对于AND运算来说,就是判断所有元素是否都是true:
using System.Linq; // 必须引用这个命名空间才能用LINQ方法 bool[] array = new bool[4] { true, false, true, true }; bool andResult = array.All(x => x); // 结果为false,和你手动计算的一致
它还自带短路优化:只要碰到第一个false就会立刻返回结果,不用遍历完整个数组,效率很高。
2. 批量OR运算(所有元素逻辑或)
对应地,用Enumerable.Any()方法——这个方法检查数组里是否至少有一个元素满足条件,完美匹配逻辑或的需求:
bool orResult = array.Any(x => x); // 结果为true,和预期一致
同样有短路特性:找到第一个true就直接返回,不用继续遍历。
补充提示
如果以后需要处理更复杂的自定义逻辑运算,那可能得自己写遍历逻辑,但针对你现在的纯AND/OR场景,这两个LINQ方法完全够用,代码简洁还省心。
内容的提问来源于stack exchange,提问作者F.Alves
相关产品推荐
相关产品推荐

