【发布时间】:2014-04-17 15:31:08
【问题描述】:
在多个链式调用中使用单个 lambda 表达式变量是否公平?例如:
MyList.Where(i => i.ID > 20).OrderBy(i => i.Name);
那么Where() 中使用的i 是否与OrderBy() 中使用的i 保持独立,或者它们之间是否存在一些隐藏的副作用,因此我必须为每个变量使用不同的变量?另外,您的答案是否也适用于 VB.NET?
我问这个是因为我在稍微不同的上下文中读到,我不应该在 LINQ 查询中直接使用 foreach 变量,而是在循环内制作变量的本地副本。上面的代码中是否也隐藏了一些类似的效果?
【问题讨论】:
-
你可以做到,但它是否会令人困惑和难以管理是另一个问题。关于
foreach变量的观点可能与闭包有关。 -
这可能有详细信息How does it work in C#?