gpt4 book ai didi

linq - Resharper 是否在此处不必要地警告我访问修改后的闭包?

转载 作者:行者123 更新时间:2023-12-01 12:53:14 25 4
gpt4 key购买 nike

...所以我有这段代码:

        foreach (var entry in list)
{
var marginOneEntry = otherList.FirstOrDefault(p => p.Margin == entry.Margin);
if (marginOneEntry == null) continue;
// Do stuff with marginOneEntry
}

并且 Resharper 5.1 警告我关于在 lambda 表达式的比较语句中使用 entry 的“访问修改后的闭包”。 FirstOrDefault 调用不是取消了这个问题吗?是我的代码不好还是这个警告只是 Resharper 中的一个缺点?

注意:我已经在 SO 上阅读了关于访问修改后的闭包的其他主题,但我想要针对这个特定案例的答案,并弄清楚 Resharper 是否对这个主题过于敏感。

最佳答案

是的,这是 Resharper 中的一个问题,因为它不区分具有惰性评估结果的方法与不在惰性评估中使用给定 lambda 的方法。 FirstOrDefault 不进行惰性求值(忘记了与“惰性”相反的术语),因此在您的示例中使用它是安全的,但通常无法从方法的签名中理解它。

关于linq - Resharper 是否在此处不必要地警告我访问修改后的闭包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7684728/

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