如何找到比较Bool值的Bool ArrayList的结果?

时间:2013-01-23 10:33:27

标签: c# arraylist boolean boolean-logic

如果我有ArrayListboolean个值,那么找出这个Bool值序列结果的最佳方法是什么?

我正在尝试这样的事情

bool result = false;    
bool flag = false;
ArrayList flags = new ArrayList();

if (something > 5)
{
 flag = true;
}
flags.Add(flag);    

foreach (bool val in flags)
{
      result &= val;
}

但是,如果我将结果变量声明为true而不是false,则会更改结果。我有点困惑。

任何建议都将不胜感激!

4 个答案:

答案 0 :(得分:4)

如果您使用& =那么“结果”的初始值非常重要。如果结果以false开头,那么很多次你做& =结果将保持为假。如果结果以true开头,则& =将按预期行事

答案 1 :(得分:1)

ArrayList更改为List<bool>并使用递归进行尝试。你不需要额外的bool变量。

  public bool BoolVal(List<bool> list, int n)
    {
        if (n == 0)//The condition that limites the method for calling itself
            return list[n];
        return list[n] & BoolVal(list, n - 1);
    }

称之为

var result = BoolVal(flags, flags.Count -1)

答案 2 :(得分:0)

首先,您应该使用强类型,List<bool>,而不是ArrayList

然后使用扩展程序All方法检查是否所有true

List<bool> flags = new List<bool>();
...
bool restul = flags.All(flag => flag);

或者:

bool restul = !flags.Any(flag => flag);

答案 3 :(得分:0)

flags.ToArray().Where(item => (bool)item == true).SingleOrDefault() != null

如果您可以使用LINQ,那么这对我有用然后我会建议您将结果默认为false并在找到true时退出循环(在将结果设置为true之后):

foreach (bool val in flags)
{
      if(val)
      {
          result = true;
          break;
      }

}

同样是在ArrayList中唯一的东西??

此处的其他建议也很好,但再次使用LINQ。