如何检查包含值为false的数组true_or_false
?
bool[] true_or_false = new bool[10];
for (int i = 0; i < txtbox_and_message.Length; i++)
{
bool bStatus = true;
if (txtbox_and_message[i] == "")
{
bStatus = false;
}
true_or_false[i] = bStatus;
}
答案 0 :(得分:15)
如果它们都不是真的,那么至少有一个是假的。
因此:
!true_or_false.All(x => x)
Docu:http://msdn.microsoft.com/en-us/library/bb548541.aspx
编辑:.NET 2.0版本,根据要求:
!Array.TrueForAll(true_or_false, delegate (bool x) { return x; })
或
Array.Exists(true_or_false, delegate (bool x) { return !x; })
注意:我一直远离设置true_or_false
的无意义代码,但可能是你想要的:
int emptyBox = Array.FindIndex(txtbox_and_message, string.IsNullOrEmpty);
如果所有字符串都是非空的,则为-1,否则为失败字符串的索引。
答案 1 :(得分:11)
return true_or_false.Any(p => !p);
答案 2 :(得分:8)
using System.Linq;
然后:
true_or_false.Contains(false);
答案 3 :(得分:2)
代替您的代码:
bool containsEmptyText = txtbox_and_message.Contains( t => t.Text ==String.Empty)
答案 4 :(得分:2)
有几种解决方案:
解决方案1: 在for循环之后执行for循环以检查true_or_false是否包含false,如下所示:
如果你想在没有花哨技巧的情况下实现这一点,并且你想自己编写代码,你可以这样做:
bool containsFalse = false;
for(int j = 0; j < true_or_false.Length; j++)
{
//if the current element the array is equals to false, then containsFalse is true,
//then exit for loop
if(true_or_false[j] == false){
containsFalse = true;
break;
}
}
if(containsFalse) {
//your true_or_false array contains a false then.
}
解决方案2:
!true_or_false.All(x => x);
<强> PK 强>
答案 5 :(得分:1)
如果在.NET3.5 +上,您可以使用System.Linq
,然后使用Any
进行检查:
// if it contains any false element it will return true
true_or_false.Any(x => !x); // !false == true
如果您不能使用Linq,那么您还有其他选择:
使用Array.Exists
静态方法:(如Ben提到的)
Array.Exists(true_or_false, x => !x);
使用List.Exists
(您必须将数组转换为列表才能访问此方法)
true_or_falseList.Exists(x => !x);
或者你需要遍历数组。
foreach (bool b in true_or_false)
{
if (!b) return true; // if b is false return true (it contains a 'false' element)
}
return false; // didn't find a 'false' element
相关
优化代码:
bool[] true_or_false = new bool[10];
for (int i = 0; i < txtbox_and_message.Length; i++)
{
true_or_false[i] = !String.IsNullOrEmpty(txtbox_and_message[i]);
}