有什么方法可以检查布尔数组是否只包含真(或假)值,或者我需要像这样检查它的值
for (int k = 0; k < 9; k++)
{
if (CheckPart[k] == false) Checked = false;
}
我知道这很简单而且有效,但仅限于好奇心。
答案 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();