使用C#丢弃运算符获取方法返回值是否有意义?

Ran*_*agy 3 .net c# operator-keyword

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

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

以下两行之间在功能上有区别吗?

private int SomeMethod() => 0;
...
SomeMethod();
_ = SomeMethod();
...
Run Code Online (Sandbox Code Playgroud)

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

Bla*_*rog 7

Microsoft文档摘录:

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

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

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

按照@MartinUllrich的评论,我升级到了16.1.0 Preview 2.0版本。警告已消失。您也可以使用#pragma指令禁用警告

带有pragma指令的样本

您还可以在源文件顶部禁用警告: 在此处输入图片说明

您还将取消整个项目的警告

为项目压抑

  • 请查看[此GitHub问题](https://github.com/dotnet/roslyn/issues/32721),尽管对于新引入的诊断过于激进,它已标记为16.1(VS 2019 Update 1)里程碑。 (2认同)