有什么方法可以检查布尔数组是否只包含真(或假)值,或者我需要像这样逐个检查它
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;
}
我知道这很简单并且有效,但只是出于好奇。
如果所有元素都为真,则以下将返回真,否则将返回假:
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();