布尔数组的值

时间:2013-01-08 15:50:59

标签: c#

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

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

我知道这很简单而且有效,但仅限于好奇心。

5 个答案:

答案 0 :(得分:7)

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

var Checked = CheckedPart.All(p => p);

答案 1 :(得分:5)

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

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

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

这是Demo

答案 2 :(得分:3)

只需使用LINQ。

Checked = CheckedPart.All(x => x);

答案 3 :(得分:1)

if(CheckPart.Any(q => q == false))
   Checked = false;

甚至更简单:

Checked = !CheckPart.Any(q => q == false);

答案 4 :(得分: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();