假设我有这样一个方法:
private async Task SomeMethod()
{
await DoSomethingAsync();
await DoSomethingElseAsync();
return;
}
既然DoSomethingElseAsync
返回一个Task
,似乎你应该能够这样做:
private async Task SomeMethod()
{
await DoSomethingAsync();
return DoSomethingElseAsync();
}
但编译器会抱怨:
由于'
SomeMethod
'是一个返回'Task
'的异步方法,因此返回关键字后面不能跟着一个对象表达式。你是否打算返回'Task<T>
'?
为什么会这样呢?
await DoSomethingAsync();
完成之前,该方法已经返回给调用方(因为它是一个异步方法)。因此,在该await
之后无法返回特定的值 - 调用方已经在此时收到了返回值并继续执行。 - Evk