2

有什么方法可以检查布尔数组是否只包含真(或假)值,或者我需要像这样逐个检查它

for (int k = 0; k < 9; k++)
{
   if (CheckPart[k] == false) Checked = false;
}

我知道这很简单并且有效,但只是出于好奇。

4

5 回答 5

7

如果所有元素都为真,则以下将返回真,否则将返回假:

var Checked = CheckedPart.All(p => p);
于 2013-01-08T15:52:01.223 回答
5

怎么样Enumerable.All<TSource>?这返回boolean

bool Checked = CheckPart.All(p => p);

确定序列的所有元素是否满足条件。此方法不会返回集合的所有元素。相反,它确定集合的所有元素是否满足条件。

这里有一个Demo

于 2013-01-08T15:52:20.117 回答
3

只需使用 LINQ。

Checked = CheckedPart.All(x => x);
于 2013-01-08T15:52:08.817 回答
1
if(CheckPart.Any(q => q == false))
   Checked = false;

甚至更简单:

Checked = !CheckPart.Any(q => q == false);
于 2013-01-08T15:52:23.643 回答
0

替代方法(没有 LINQ):

Boolean allAreTrue = true;
for (var i = 0; i < CheckPart.Length && allAreTrue; i++){
  allAreTrue &= CheckPart[i];
}

或者,使用扩展方法:

public static class BooleanExtender
{
    public static Boolean AllAreFalse(this Boolean[] items)
    {
        for (var i = 0; i < items.Length; i++)
            if (items[i]) return false;
        return true;
    }

    public static Boolean AllAreTrue(this Boolean[] items)
    {
        for (var i = 0; i < items.Length; i++)
            if (!items[i]) return false;
        return true;
    }
}

new Boolean[]{ ... }.AllAreTrue();
new Boolean[]{ ... }.AllAreFalse();
于 2013-01-08T15:53:28.290 回答