Нет никакой разницы между этими двумя;хотя, если вам не требуется присваивание, по моему мнению, лучше его пропустить для улучшения читабельности (т. е. если методы работают быстрее, чем в простых примерах выше, не вводя новую переменную, тогда никто не должен мысленно отслеживатьnotUsedResult
(хотя ваше именование в любом случае хорошо с этим справляется).
// 1
private async Task LittleFunction()
{
var operand = new SomeObject();
var notUsedResult = await SomeAsyncOperationWith(operand);
SomeOtherOperationsWith(operand);
}
// 2
private async Task LittleFunction()
{
var operand = new SomeObject();
await SomeAsyncOperationWith(operand);
SomeOtherOperationsWith(operand);
}
Однако существует третий вариант:
// 3
private async Task LittleFunction()
{
var operand = new SomeObject();
var task = SomeAsyncOperationWith(operand);
SomeOtherOperationsWith(operand);
await task;
}
Это отличается от приведенного выше вчто SomeAsyncOperationWith
вызывается до SomeOtherOperationsWith
, но не может быть завершено до следующего. Это лучше, если нет никакой зависимости между двумя задачами, поскольку это позволяет функции выполнять логику SomeOtherOperationsWith
, ожидая при этом любой ввод-вывод / длительное выполнение.операция, выполняемая в SomeAsyncOperationWith
(т. е. это преимущество использования async
в первую очередь). Конечно, если есть зависимость для выполнения задачи SomeAsyncOperationWith
до SomeOtherOperationsWith
, вам необходимопридерживайтесь одного из ваших оригинальных решений.