ブール配列に真(または偽)の値のみが含まれているかどうかを確認する方法はありますか、またはこのように値ごとに確認する必要があります
for (int k = 0; k < 9; k++)
{
if (CheckPart[k] == false) Checked = false;
}
これは単純で機能することは知っていますが、好奇心のためだけです。
ブール配列に真(または偽)の値のみが含まれているかどうかを確認する方法はありますか、またはこのように値ごとに確認する必要があります
for (int k = 0; k < 9; k++)
{
if (CheckPart[k] == false) Checked = false;
}
これは単純で機能することは知っていますが、好奇心のためだけです。
以下は、すべての要素が true の場合に true を返し、それ以外の場合は false を返します。
var Checked = CheckedPart.All(p => p);
どうEnumerable.All<TSource>
ですか?これは戻りますboolean
bool Checked = CheckPart.All(p => p);
シーケンスのすべての要素が条件を満たすかどうかを判断します。このメソッドは、コレクションのすべての要素を返すわけではありません。代わりに、コレクションのすべての要素が条件を満たすかどうかを判断します。
がここにありますDemo
LINQを使用するだけです。
Checked = CheckedPart.All(x => x);
if(CheckPart.Any(q => q == false))
Checked = false;
またはさらに簡単:
Checked = !CheckPart.Any(q => q == false);
別の方法 (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();