gpt4 book ai didi

c# - CS1998 "method lacks await operators"背后的原因是什么

转载 作者:太空狗 更新时间:2023-10-29 17:47:46 24 4
gpt4 key购买 nike

async 方法缺少任何 await 运算符时,C# 编译器会生成 CS1998 警告。

警告背后的原因是什么?

我知道 async 通过添加状态机和异常处理在方法中引入开销。

警告性能的主要原因是什么?或者是通知我我可能在某处忘记了 await 的原因?

也许语言设计团队的某个人可以阐明这一点...:)

(请:不要发布说“您可以删除 async 以使警告消失”的答案。我想知道警告背后的原因和决定,而不是解决方法.)

最佳答案

What are the reasons behind the warning?

简单地说,一个async不使用 await 的方法几乎肯定是错误的。并非总是错误,否则这将是一个错误。但几乎总是错误的,因此发出警告。

一个非常常见的异步新手错误是假设 async意思是“使这个方法异步”。这通常与“异步”意味着“在后台线程上运行”的假设配对,但有时它只是一个“魔法”假设。

因此,警告明确指出代码将同步运行。

我还发现这个警告在重构我自己的代码时很有用 - 有时我最终会得到一个 async应该更改为同步方法的方法,并且此警告指出了这一点。

async 是真的没有await如果你有非平凡的(即可能产生异常的)同步代码并且你需要实现异步方法签名,这可能有助于减少代码。在这种情况下,您可以使用 async避免六行 TaskCompletionSource<T>try/catch代码。但这是一个非常小的用例;绝大多数时候,警告是有帮助的。

关于c# - CS1998 "method lacks await operators"背后的原因是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37594737/

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