修改 ReSharper 中的关闭警告

2023-12-06

我希望有人可以向我解释这段代码中可能会发生什么不好的事情,这会导致 ReSharper 发出“访问修改的闭包”警告:

bool result = true;

foreach (string key in keys.TakeWhile(key => result))
{
    result = result && ContainsKey(key);
}

return result;

即使上面的代码看起来安全,在其他“修改的闭包”实例中可能会发生什么不好的事情?我经常在使用 LINQ 查询时看到此警告,但我倾向于忽略它,因为我不知道会出现什么问题。 ReSharper 尝试通过创建第二个对我来说似乎毫无意义的变量来解决问题,例如它改变了foreach上面一行到:

bool result1 = result;
foreach (string key in keys.TakeWhile(key => result1))

Update:附带说明一下,显然整个代码块可以转换为以下语句,这不会导致修改关闭警告:

return keys.Aggregate(
    true,
    (current, key) => current && ContainsKey(key)
);

在该特定代码中什么也没有,以以下为例:

int myVal = 2;

var results = myDatabase.Table.Where(record => record.Value == myVal);

myVal = 3;

foreach( var myResult in results )
{
    // TODO: stuff
}

看起来结果将返回值所在的所有记录2因为这就是您声明查询时 myVal 设置的值。然而,由于延迟执行,它实际上是值是的所有记录3因为在您迭代查询之前,查询不会被执行。

在您的示例中,该值没有被修改,但 Resharper 警告您可能会被修改,并且延迟执行可能会给您带来问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

修改 ReSharper 中的关闭警告 的相关文章

随机推荐

  • 在 C# 中使用 RSA 加密并在 Java 中使用解密时出现填充错误

    目前 当我使用 Java 解密 C 中生成的 Base64 编码的 RSA 加密字符串时 收到以下错误 javax crypto BadPaddingException 不是 PKCS 1 块类型 2 或零填充 NET 和 Java 交换之
  • 为什么 RTC 中没有显示我的待处理更改?

    场景 我刚刚连接到流 并创建了一个新的存储库工作区 我加载了它的两个组件 并修改了一些代码 如果我打开 挂起的更改 视图 我在那里看不到任何挂起的更改 并且选择了 显示完整视图 因此我应该看到传入 传出和挂起的更改集 我的文件已保存 我可以
  • Python + Flask + Discord:如何通过 Flask 端点通过 Discord 发送消息?

    我正在尝试发送一条不和谐的消息 通过 Flask 端点激活 当我打电话时 我收到以下错误消息http 127 0 0 1 5000 send RuntimeError There is no current event loop in th
  • 困惑如何在 C++ 中使用 strtod() 从字符串转换为双精度

    如果有人能解释如何使用该功能 那就太好了 看不懂参数 Thanks 第一个参数是指向字符的指针 c str 为您提供来自字符串对象的指针 第二个参数是可选的 它将包含一个指向字符串中数值之后的下一个字符的指针 看http www cplus
  • 展开详细信息/摘要时滚动到锚点?

    我有一大堆堆叠的 div 其中包含id锚点和嵌入视频包裹在details and summary标签 是否可以同时扩展details并滚动到其id只需单击一下 如果我使用下面的脚本 我可以滚动到一个锚点a tag JS document r
  • 如何将绑定错误转化为运行时异常?

    正如我们的项目中设置了 将警告视为错误 以捕获早期可能的问题一样 我希望有一个运行时异常来尽早捕获它们 我最近被这个问题困扰了 我很高兴能有这个 能做到吗 如果是的话 怎么办 你可以挂入PresentationTraceSources与您自
  • 从数据框中删除百分比

    我有一个源自 Excel 文件的数据框 它在列上方有常见的标题 但有些列中有 符号 我想删除它们 搜索 stackoverflow 给出了一些很好的代码 用于从矩阵中删除百分比 有什么方法可以编辑 R 中矩阵中的值吗 当我尝试将其应用到我的
  • 如何在 Angular 中初始化 Firebase App Check

    我想知道如何使用 Angular 初始化 firebase 应用程序检查 我正在使用 Angular Fire 但我不确定如何在使用任何服务之前初始化 Firebase 应用程序检查 文档有这个 在访问任何 Firebase 服务之前 将以
  • 如何清除 Windows Phone 8 上 Cordova Web View 的缓存?

    我正在为 Windows Phone 8 开发 Cordova 2 9 0 应用程序 该应用程序大量使用外部内容 使用从其他来源提供的 JS 和 HTML 内容 一切正常 但浏览器组件缓存严重 我发现清除缓存的唯一方法是卸载并再次安装该应用
  • Xcode 4.4 有 subversion 吗?

    我刚刚下载了 Xcode 4 4 与它的前身不同 没有安装程序 只有一个 app 颠覆潜伏在某处吗 里面有目录吗 app我可以添加到PATH恢复我所有的命令行工具 从 XCode 首选项安装命令行工具 一切都会恢复正常
  • 如何在 JavaScript 单元测试中模拟 localStorage?

    有没有可以模拟的库localStorage 我一直在使用Sinon JS对于我的大多数其他 javascript 模拟 我发现它真的很棒 我的初步测试表明 localStorage 拒绝在 Firefox 中分配 sadface 所以我可能
  • 如何在普通的html文本框中自动换行?

    我有这个文本框 p Event Data p
  • 恢复曾经暂存但未提交的文件?

    我已经在现有项目中初始化了 git repo 暂存了所有文件 然后在没有进行初始提交的情况下决定清理索引 不知道为什么我认为这是一个好主意 但我立即输入git reset hard 我真的不能说出我此刻的想法 也许几个不眠之夜造成了损失 现
  • 联合的默认值是否始终为零?

    请让我们考虑以下代码 include
  • C# / WPF 取消密码框内的密码掩码

    每当我单击复选框时 如何解密和隐藏密码框中的密码 我正在使用 C WPF 模板 这是我的 XAML 代码
  • HDFS 文件如何存储在底层操作系统文件系统上?

    HDFS 是 Hadoop 中的逻辑文件系统 块大小为 64MB HDFS 上的文件保存在底层操作系统文件系统上 例如块大小为 4KiB 的 ext4 据我所知 对于本地文件系统上的文件 操作系统使用4KiB块的物理硬盘的起始柱面和结束柱面
  • 使用 Objectify 创建或出错

    我正在开始使用 Google App Engine 并且正在使用 Objectify 如何在数据存储中创建根实体 但如果它已经存在 则会出错 我没有找到任何内置的东西 例如DatastoreService put 因此ofy save 将覆
  • Entity Framework Core 在 QueryType(数据库视图)上使用 Include

    我将 EF Core 连接到 MySql 并且有一个名为 帖子浏览量 我读了这个article说我可以使用数据库视图的查询类型 如果我只调用 context PostViews 它就可以工作 但如果我在它上面使用 Include 例如 co
  • 不同的浏览器意味着同一台机器的不同客户端

    如果我打开我正在使用的同一浏览器 例如 Firefox 的新选项卡 或窗口 那么服务器将把它视为同一个客户端 但是 如果我从不同的浏览器 例如 IE 打开相同的 URL 则服务器无法将其识别为同一个客户端 那么 服务器如何在内部识别客户端呢
  • 修改 ReSharper 中的关闭警告

    我希望有人可以向我解释这段代码中可能会发生什么不好的事情 这会导致 ReSharper 发出 访问修改的闭包 警告 bool result true foreach string key in keys TakeWhile key gt r