List.ForEach在vb.net – 令我困惑

前端之家收集整理的这篇文章主要介绍了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。

猜你在找的VB相关文章