gpt4 book ai didi

c# - 为什么不允许为方法声明空表达式体?

转载 作者:可可西里 更新时间:2023-11-01 08:20:49 26 4
gpt4 key购买 nike

我有一个像这样有一个空主体的方法:

public void Foo()
{
}

根据 ReSharper 的建议,我想将它转换为表达式主体以节省一些空间,它变成了:

public void Foo() => ;

无法编译。是否有不支持的具体原因?

而且我认为我应该为 ReSharper 打开一个错误票,因为它会将代码重构为不可编译的版本。

最佳答案

[编辑:此答案不正确,请勿使用 - 请参阅评论。]

如您所见,表达式主体使用了 lambda 运算符(“=>”)。如果您仍想将空的 void 方法编写为表达式主体,则可以使用 Expression.Empty() 来表明 Foo() 是空(void)表达式。

Methods that return void or Task should be implemented with expressions that don’t return anything, either. (https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/october/csharp-the-new-and-improved-csharp-6-0)

下面的代码片段应该可以工作。

public void Foo() => Expression.Empty();

我也同意你最后的评论,这是一个 ReSharper 错误。

关于c# - 为什么不允许为方法声明空表达式体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43313408/

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