c# - 热逻辑比较 bool 数组与它自己的单个 bool 结果?

标签 c# .net arrays

我有一个如下所示的数组:

bool[] array = new bool[4] { true, false, true, true } ;

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

AND example: true AND false AND true AND true

所以我可以获得在上面的示例中为假的最终结果,或者:

OR example: true OR false OR true OR true

在上面的例子中,这会给我 true。

数组中是否有任何内置方法允许我这样做?还是我必须在所有元素之间迭代并一一比较?

最佳答案

根据评论和其他答案,您可以对这两者使用 LINQ。 (尽管您不必这样做;farbiondriven 的答案绝对可以正常工作,尽管它的通用性较低,因为 LINQ 解决方案可以处理任何 IEnumerable<bool>。)

Any 使用身份投影将检测任何元素是否为true ,这与执行逻辑 OR 的结果相同在所有元素上。

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

bool orResult = array.Any(x => x);
bool andResult = array.All(x => x);

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

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

关于c# - 热逻辑比较 bool 数组与它自己的单个 bool 结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49632043/

相关文章:

c# - Unity 3D 质量设置之间隐藏的差异?

c# - 我可以更改默认配置文件吗?

c# - `Aggregate`怎么写成 `from .. in ..`?

c - 自动边界检查?

c# - 为什么 Entity Framework Core 2.2 C# 在使用现有嵌套实体插入新实体时会响应错误

c# - 这是滥用依赖注入(inject)吗? (什么时候依赖不是依赖)

c# - .NET 条码扫描器 DeviceEnabled 的 POS 设置失败

javascript - knockout 组列表为带有对象的更小列表

c++ - 使用函数从 C++ 中的数组中删除重复项

c++求和使用for循环和二维数组