首页 > 解决方案 > 将 C# 丢弃运算符用于方法返回值是否有意义?

问题描述

Visual Studio 2019 的代码分析和代码建议开始突出显示我调用返回值但根本不使用该值的方法的每一行代码,并告诉我使用丢弃运算符_

我不完全理解为什么这很重要,甚至对于 Fluent API 样式代码来说似乎是错误的。

以下两行之间是否存在功能差异?

private int SomeMethod() => 0;
...
SomeMethod();
_ = SomeMethod();
...

如果返回值是参考,会更重要吗?如果没有,有没有办法全局禁用此检查?

标签: c#.netoperator-keyword

解决方案


摘自微软文档

从 C# 7.0 开始,C# 支持丢弃,这是在应用程序代码中有意使用的临时虚拟变量。丢弃相当于未赋值的变量;它们没有价值。因为只有一个丢弃变量,并且该变量甚至可能没有分配存储空间,所以丢弃可以减少内存分配。因为它们使代码的意图清晰,所以它们增强了代码的可读性和可维护性。

完成所有代码分析以帮助改进整体编码。有时我们会在项目早期编写返回简单值的快速方法。在重构期间,无论出于何种原因,我们都会停止使用此类变量。代码分析只是指出了这一点。作为开发人员,您可以说,嘿,让我重构方法以不返回变量,因为我们不需要它。这完全取决于您团队的开发风格。

验证您的问题,我正在运行 VS2019 16.0.0 Preview 5.0,问题就在那里。

根据@MartinUllrich 的评论,我升级到了 16.1.0 预览版 2.0。警告消失了。您还可以使用 #pragma 指令禁用警告

带有 pragma 指令的示例

您还禁用源文件顶部的警告: 在此处输入图像描述

您还可以抑制整个项目的警告

抑制项目


推荐阅读