为什么这按预期工作:
list.ForEach(sub(x) x.Name = "New Name")
但这不是:
list.ForEach(function(x) x.Name = "New Name")
还有人糊涂吗?
最佳答案
当您使用 Function
关键词
list.ForEach(Function(x) x.Name = "New Name")
你正在创建一个函数,它接受一个名为
x
的参数并返回 bool
(在这种情况下)。所以,在这种情况下,
=
不是赋值运算符,而是比较运算符,因此 Name
属性没有改变。(由于比较运算符,编译器推断该函数返回
bool
)它相当于
list.ForEach(sub(x) Foobar(x))
...
Function Foobar(x as Foo) As Boolean
Return x.Name = "New Name" 'returns a boolean'
End Function
关于带有函数(x)的 VB.NET Linq 表达式未执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12264877/