例如
foreach(var toCheck in query)
{
foreach (var againstItem in totalWeight)
{
count1++
if (getIEnumerable(toCheck,againstItem).Any(
x => { count2++; return (x == againstItem.Key); }))
{
blacklist.Add(toCheck);
break;
}
count3++;
}
}
结果是:
count1
= 166184
count2
= 30620
count3
= 165848
与count2
和count1
count3
会更大
答案 0 :(得分:5)
count2将递增一次,直到在该集合中找到匹配为止。
如果该函数返回空集合,则count2可以很容易地小于count1
答案 1 :(得分:2)
代码块内的条件
x => { count2++; return (x == againstItem.Key); }
对列表中的每个项目进行一次评估。
这就是.Any
方法的含义 - 它确定枚举中的任何项是否满足给定条件。它必须评估每个项目的条件,并查看结果是true
还是false
。虽然一旦找到true
,那么执行就会停止。
答案 2 :(得分:2)
如果没有要枚举的项目,则循环将不会运行且count2
将不会增加。
你的情况可以吗?
答案 3 :(得分:0)
我真的不知道c#,但我的猜测是那个
count1
每次都计算所有循环
count2
,只有在找到命中时才会计算。就像我之前的那个人刚刚说的那样,如果你没有元素就不会增加
count3
计算未满足的条件,因此每次找到命中时,它都会中断并且不会执行count3 ++