Это также смущает меня, и я чувствую, что предыдущие ответы не учитывали ваш фактический вопрос:
Зачем использовать конструкцию return wait, когда вы можете напрямую возвращать задачу из внутреннего вызова DoAnotherThingAsync ()?
blockquote>Ну, иногда вы на самом деле хотите
Task<SomeType>
, но в большинстве случаев вам действительно нужен экземплярSomeType
, то есть результат задачи.Из вашего кода:
async Task<SomeResult> DoSomethingAsync() { using (var foo = new Foo()) { return await foo.DoAnotherThingAsync(); } }
Человек, незнакомый с синтаксисом (например, я), может подумать, что этот метод должен возвращать
Task<SomeResult>
, но поскольку он помечен какasync
, это означает, что его фактический тип возвратаSomeResult
. Если вы просто используетеreturn foo.DoAnotherThingAsync()
, вы возвращаете задачу, которая не будет компилироваться. Правильный способ - вернуть результат задачи, поэтомуreturn await
.