【问题标题】:How to check multiple bools in one如何同时检查多个布尔值
【发布时间】:2022-07-13 01:19:53
【问题描述】:

我需要创建一个允许添加/删除布尔值的管理器,然后有一个条件来检查是否为真。

我创建了一个列表,然后使用 Contains(true) 检查是否有任何为真,但后来我意识到它不会重新检查 bool 方法(例如,一些 bool 将检查某个按钮是否正在按下)。

有什么想法可以代替创建一长串 if 语句?

public static List<bool> BoolList = new List<bool>() { example() };

public static bool example(){
    return textBox1.Contains("test");
}

//Loop
if (BoolList.Contains(true)) {}

【问题讨论】:

  • 向我们展示您的代码,而不是描述它。
  • 猜测一下,您需要List&lt;Func&lt;bool&gt;&gt; 而不是List&lt;bool&gt;。但正如大卫所说,您需要展示代码的相关部分。
  • @Fetix:你的问题中缺少的术语是你想懒惰地检查条件,所以当你在初始化时要求它时评估条件。
  • 请不要破坏您的问题
  • 请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Exchange (SE) 网络上发帖,您已根据 CC BY-SA license 授予 SE 分发内容的不可撤销权利(即无论您未来的选择如何)。根据 SE 政策,分发非破坏版本。因此,任何破坏行为都将被撤销。请参阅:How does deleting work? …。如果允许删除,则帖子下方左侧有一个“删除”按钮,但仅在浏览器中,而不是移动应用程序中。

标签: c# .net boolean


【解决方案1】:

您可以使用Func&lt;bool&gt; 列表来执行此操作。不是传入函数的结果,而是传入函数本身。例如:

public static List<Func<bool>> FuncList = new List<Func<bool>>
{ 
    isleftdown, isRightDown, otherFunc
};

并使用一些简单的 Linq 检查结果:

// Are all functions true:
var allTrue = FuncList.All(f => f());

// Are any functions true:
var anyTrue = FuncList.Any(f => f());

// Are all functions false:
var anyFalse = FuncList.All(f => !f());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-19
    • 2013-03-20
    • 2019-05-11
    • 2019-04-27
    • 2019-04-07
    • 2018-08-18
    • 2018-07-27
    • 1970-01-01
    相关资源
    最近更新 更多