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。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |