加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-17 00:00:36 所属栏目:大数据 来源:网络整理
导读:请考虑以下代码示例: TempList.ForEach(Function(obj) obj.Deleted = True End Function) 和这个: TempList.ForEach(Function(obj) obj.Deleted = True) 我希望结果是一样的,但第二个代码示例不会更改列表TempList中的对象。 这个帖子更了解为什么…?或
请考虑以下代码示例:
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。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读