我一直在搜索和搜索,但无法在 .NET 库和框架中找到任何带有“async”修饰符且被视为 API 的方法。
我已经看到它在他们的代码中被使用,但它并没有被“暴露”。
然后我想到了另一个问题,我们应该公开“异步 API 方法”,还是只将 API 公开为任务。我认为答案是后者,但也许有人可以向我展示一个不是的情况。
我也不记得是在哪里读到的,但我确定我是在什么地方读到的。
最佳答案
async
是一个实现细节。
方法的签名只是一个返回Task
的方法。或 Task<T>
.
所有这些async
所做的是更改您可以在方法中编写的 C# 变体。它对调用代码完全不可见。
这就是为什么您不允许声明async
的原因在接口(interface)成员上——它是一个实现细节,而接口(interface)没有实现,这没有意义。
因此,您在 re: API 中做出的决定是您希望您的方法返回的内容。如果是 Task
或 Task<T>
,完全由您决定是否实现该方法 async
或不,您稍后可以自由更改该决定(稍后添加 async
不会更改方法签名 - 这不是重大更改)
对于其他 API 考虑因素,您可能希望引用 Stephen Toub 的两篇文章 Should I expose asynchronous wrappers for synchronous methods?和 Should I expose synchronous wrappers for asynchronous methods? .对两者的简短回答是否定的。
关于C# - API 是否应该有 "async"修饰符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44298844/