Gra*_*use 24 vb.net foreach generic-list
请考虑以下代码示例:
TempList.ForEach(Function(obj)
obj.Deleted = True
End Function)
Run Code Online (Sandbox Code Playgroud)
还有这个:
TempList.ForEach(Function(obj) obj.Deleted = True)
Run Code Online (Sandbox Code Playgroud)
我希望结果是相同的,但第二个代码示例不会更改列表TempList中的对象.
这篇文章更能理解为什么......?或者至少得到一些帮助,了解为什么......
Met*_*ght 53
这是因为你用Function而不是Sub.由于a Function返回一个值,编译器认为等号(=)用作比较,而不是赋值.如果更改Function为Sub,编译器会正确地将等号视为赋值:
TempList.ForEach(Sub(obj) obj.Deleted = True)
Run Code Online (Sandbox Code Playgroud)
如果你有一个多线lambda; 你不会有这个问题:
TempList.ForEach(Function(obj)
obj.Deleted = True
Return True
End Function)
Run Code Online (Sandbox Code Playgroud)
显然,对于ForEach方法,使用a是没有意义的,Function因为不会使用返回值,所以你应该使用a Sub.
| 归档时间: |
|
| 查看次数: |
27120 次 |
| 最近记录: |