gpt4 book ai didi

c# - 使用 Exists 谓词执行 .. While.. 操作。访问修改后的闭包?

转载 作者:行者123 更新时间:2023-12-02 15:24:13 24 4
gpt4 key购买 nike

string reference;
do {
reference = GenerateNewReference();
} while (currentItems.Exists(i=>i.Reference.Equals(reference));

ReSharper 警告我有关此问题,即“访问修改的闭包”。我已尽力阅读和理解它,但我的代码对我来说仍然很好。

我的代码有问题吗?

最佳答案

在你的情况下没问题,因为 reference 的值在 lambda 的生命周期内不会改变。但 Reshaper 并不知道这一点。据 resharper 观察,lambda 可能会存活更长时间,在此期间 reference 会更改其值。

该规则旨在在您编写如下代码时发出警告:

int myInt=1;
Func<int,bool> IsOne = i=>i==myInt;
myInt=2;
IsOne(1);//=> false
IsOne(2);//=> true

因为 IsOne lambda 通过引用而不是值绑定(bind)到 myInt

关于c# - 使用 Exists 谓词执行 .. While.. 操作。访问修改后的闭包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4768044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com