2

ブール配列に真(または偽)の値のみが含まれているかどうかを確認する方法はありますか、またはこのように値ごとに確認する必要があります

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

これは単純で機能することは知っていますが、好奇心のためだけです。

4

5 に答える 5

7

以下は、すべての要素が true の場合に true を返し、それ以外の場合は false を返します。

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 に答える