检查数组是否包含false?

时间:2010-10-09 22:26:22

标签: c# .net arrays .net-2.0 contains

如何检查包含值为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;                           
}

6 个答案:

答案 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]);
}