如果我有ArrayList
个boolean
个值,那么找出这个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,则会更改结果。我有点困惑。
任何建议都将不胜感激!
答案 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。