我想在扩展方法的函数中修改局部变量。看
int myvar=0;
MyList.Where(
x =>
{
if (condition)
myvar += 1;
return false;
});
return myvar;
为什么这不起作用?
我想在扩展方法的函数中修改局部变量。看
int myvar=0;
MyList.Where(
x =>
{
if (condition)
myvar += 1;
return false;
});
return myvar;
为什么这不起作用?
您真的不想Where
修改谓词主体中的局部变量。像这样有副作用的函数是个坏消息;尝试想象如果这来自(例如)来自于生成的并行枚举会发生什么AsParallel()
- 你将有一个竞争条件。
如果您解释您要完成的工作,我相信我们中的一个人可以为此提供更好的方法。我的猜测是它看起来像这样:
int count = myList.Count(x => condition(x));
该Where
方法返回 anIEnumerable<T>
但您实际上并未枚举它(使用 foreach 或通过手动迭代结果IEnumerator<T>
)。