async-метод без await выполнит своё тело синхронно и обычно вызовет предупреждение CS1998. Сам модификатор async не переносит работу в другой поток.
Если метод помечен async, но внутри нет await — что произойдёт?
async-метод без await выполнит своё тело синхронно и обычно вызовет предупреждение CS1998. Сам модификатор async не переносит работу в другой поток.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
async-метод без await выполнит своё тело синхронно и обычно вызовет предупреждение CS1998. Сам модификатор async не переносит работу в другой поток.
Для async Task/Task<T> после выполнения возвращается завершённая задача либо задача с ошибкой, если тело выбросило исключение. Это отличается от обычного синхронного метода, непосредственно выбрасывающего исключение вызывающему коду.
Если асинхронной работы нет, часто лучше убрать async и вернуть Task.CompletedTask или Task.FromResult. При такой переработке нужно сохранить ожидаемую семантику ошибок. Async void следует оставлять главным образом для событий: его ошибки не возвращаются через Task.