对于我的生活,我无法弄清楚为什么所有的foos都不为空。
我假设.ForAll()
应该在我调用.All()
方法之前执行,但它不是吗?
public class Foo
{
public string Bar { get; set; }
}
static void Main(string[] args)
{
var foos = new List<Foo> { new Foo(), new Foo(), new Foo() };
var newFoos = foos
.AsParallel()
.Select(x =>
{
x.Bar = "";
return x;
});
newFoos.ForAll(x => x = null);
var allFoosAreNull = newFoos.All(x => x == null);
Console.WriteLine(allFoosAreNull); // False ??
}
答案 0 :(得分:7)
当你这样做时
newFoos.ForAll(x => x = null);
您要将null
分配给x
,这是您的lambda的参数。 x
是lambda的本地。它不是ref
参数,为其赋值不会影响其正文。实际上,这条线没有任何作用。