【发布时间】:2020-10-17 03:11:33
【问题描述】:
是否有任何这样的写法场景:
public async Task<SomeResult> DoSomethingAsync()
{
// Some synchronous code might or might not be here... //
return await DoAnotherThingAsync();
}
而不是这个:
public Task<SomeResult> DoSomethingAsync()
{
// Some synchronous code might or might not be here... //
return DoAnotherThingAsync();
}
有意义吗?
既然可以从内部 DoAnotherThingAsync() 调用中直接返回 Task<T>,为什么还要使用 return await 构造?
我在很多地方都看到了带有return await 的代码,我想我可能遗漏了一些东西。但据我了解,在这种情况下不使用 async/await 关键字并直接返回 Task 在功能上是等效的。为什么要增加额外的await 层的额外开销?
【问题讨论】:
-
我认为你看到这个的唯一原因是因为人们通过模仿学习,并且通常(如果他们不需要)他们使用他们能找到的最简单的解决方案。所以人们看到那个代码,使用那个代码,他们看到它有效,从现在开始,对他们来说,这是正确的方法......在这种情况下等待是没有用的
-
至少有一个重要区别:exception propagation。
-
我也看不懂,完全理解不了这个概念,没有任何意义。从我了解到如果一个方法有一个返回类型,它必须有一个返回关键字,这不是 C# 语言的规则吗?
-
@monstro OP 的问题确实有返回语句吗?
标签: c# .net .net-4.5 async-await