前端之家收集整理的这篇文章主要介绍了
List.ForEach在vb.net – 令我困惑,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
请考虑以下
代码示例:
TempList.ForEach(Function(obj)
obj.Deleted = True
End Function)
和这个:
TempList.ForEach(Function(obj) obj.Deleted = True)
我希望结果是一样的,但第二个代码示例不会更改列表TempList中的对象。
这个帖子更了解为什么…?或至少得到一些帮助了解为什么…
这是因为你使用了Function而不是Sub。由于
函数返回一个值,因此编译器认为等号(=)用作比较而不是赋值。如果将Function更改为Sub,则编译器将正确地将等号视为赋值:
TempList.ForEach(Sub(obj) obj.Deleted = True)
如果你有一个多行的lambda;你不会有这个问题:
TempList.ForEach(Function(obj)
obj.Deleted = True
Return True
End Function)
显然,对于ForEach方法,使用函数是没有意义的,因为返回值不会被使用,所以你应该使用一个Sub。
原文链接:https://www.f2er.com/vb/255976.html