当一个
这个警告的背后原因是什么?
我知道使用
这个警告的主要原因是性能吗? 还是它的作用是提醒我可能忘记了在某个地方使用
也许语言设计团队的成员可以为我们解答一下这个问题... :)
(请不要回答“你可以去掉
async
方法没有任何await
操作符时,C#编译器会产生CS1998警告。这个警告的背后原因是什么?
我知道使用
async
会增加状态机和异常处理,从而增加了方法的开销。这个警告的主要原因是性能吗? 还是它的作用是提醒我可能忘记了在某个地方使用
await
?也许语言设计团队的成员可以为我们解答一下这个问题... :)
(请不要回答“你可以去掉
async
以消除警告”,我想知道警告背后的原因和决策,而不是绕过警告的方法。)
await
,那么它被定义为async
似乎没有什么意义。 - juharrawait
操作符,这显然是不正确的。对于这种情况,“这不会达到你的预期,并且有更好的编写方式来实现你想要的效果”是编译器警告的明显候选情况。 - Jeroen MostertTask<TResult>
没有协变性,因此如果您使用Task.FromResult()
返回某些内容,则可能需要手动指定泛型类型,而不是让类型推断(如果您的方法返回值的超类与您传递给Task.FromResult()
的值相同)。如果您必须实现诸如Task MyMethod()
这样的方法签名,则编写async Task MyMethod() { DoSomething(); }
比编写Task MyMethod() { DoSomething(); return Task.CompletedTask; }
更加简洁。 - binki