标记了async,函数里就可以用await,return的语义也会发生变化,返回类型也必须是Task或者Task<T>。所以这就是个语法而已,不要去对async钻牛角尖。你这个问题就像为什么只有函数里面可以写语句而类里面不行一样。
如果你用了async但是没用await,你也是创造了一个Task类的构造函数,仅此而已。这跟await关系不大,async决定的是return应该怎么理解。既然都一定要有一个关键字来改变return了,那要求用了await也要写上async,也就是顺理成章的事情了。
如果当初要求你把return写成await return的话,那没有async的确不是问题。你看yield return就没让你加什么关键字。
作者:知乎用户
链接:https://www.zhihu.com/question/298620447/answer/511245136
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。