3

我需要检查未知数量的布尔值..根据结果它将执行适当的功能。这是我正在搜索的示例:

if(bool[x] && bool[y] && bool[z] ...)
   myFunc();
4

5 回答 5

4

你可以使用LINQ它。

如果您需要所有布尔值都为真,您可以使用Any

if (bools.All(b => b))

例如,如果您需要其中 4 个完全正确,您可以使用Count

if (bools.Count(b => b) == 4)

或者至少一个,有Any

if (bools.Any(b => b))
于 2015-06-13T15:33:39.787 回答
1

您可以使用 LINQ 函数All()

var all = bool.All(x=>x == true);
if(all)
    myFunc();

或者干脆

var all = bool.All(x=>x);
if(all)
    myFunc();
于 2015-06-13T15:32:56.963 回答
0

像这样的东西:

var all=true;
for (var i=x; i<z; i++) if (!bool[i]) {all=false; break;}
if (all) myFunc()

或者,如果x, y, z不是顺序的,则将它们放入列表或数组中:

int[] indices = new [] {x, y, z};

然后像这样迭代:

var all=true;
foreach (var i in indices) if (!bool[i]) {all=false; break;}
if (all) myFunc()
于 2015-06-13T15:31:40.693 回答
0
if (bool.Any(m => !m)
{
    // At least one bool is false
}
else
{
    // All bools are true
}
于 2015-06-13T15:34:13.820 回答
0

使用Linq检查所有值是否满足谓词。

if(bool.All())

于 2015-06-13T15:35:04.560 回答