gpt4 book ai didi

c# - 在 C#.NET 中执行 bool 逻辑运算的最有效方法是什么?

转载 作者:行者123 更新时间:2023-11-30 15:09:43 25 4
gpt4 key购买 nike

我正在为我办公室使用的另一个软件编写一个插件,允许用户审核他们正在处理的文件。我试图让我的工具尽可能灵活。我的想法是用户将生成一个节点树,其中可以包含其他节点作为子节点。在树的底部,节点将是条件节点,根据用户正在处理的文件,这些节点将失败或通过。此外,用户可以将每个节点设置为特定的逻辑类型,包括 AND、OR、NOR、NAND .

AND:  All sub nodes must pass 
OR: At least one sub node must pass
NAND: At least one sub node must fail
NOR: All sub nodes must fail

我现在想弄清楚的是,如果我有一些由节点或子节点返回的 bool 集合,那么将上述逻辑类型应用到此列表的最有效方法是什么?我开始编写 foreach 语句,但似乎因为二进制逻辑对于计算机的工作方式来说是如此基础,所以应该有更好、更快和更少迭代的方法。

最佳答案

Linq 是你的 friend :

var booleans = new List<bool> { true, true, false, true };

bool allPass = booleans.All(p => p);
bool anyPass = booleans.Any(p => p);
bool allFail = booleans.All(p => !p);
bool anyFail = booleans.Any(p => !p);

这实际上仍然只是执行一个foreach,但它们更加紧凑,而且AllAny 操作符合您的需要。

p => p 是一个返回 bool 值的 lambda。例如,如果您正在检查具有方法 DoesThisPass 的节点,您可以像这样重写检查:

bool allPass = nodes.All(p => p.DoesThisPass());
bool anyPass = nodes.Any(p => p.DoesThisPass());
bool allFail = nodes.All(p => !p.DoesThisPass());
bool anyFail = nodes.Any(p => !p.DoesThisPass());

关于c# - 在 C#.NET 中执行 bool 逻辑运算的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4114526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com