Если метод помечен async, но внутри нет await — что произойдёт?

async-метод без await выполнит своё тело синхронно и обычно вызовет предупреждение CS1998. Сам модификатор async не переносит работу в другой поток.

Короткий ответ

Что ответить на собеседовании

async-метод без await выполнит своё тело синхронно и обычно вызовет предупреждение CS1998. Сам модификатор async не переносит работу в другой поток.

Подробный разбор

Ответ с пояснениями

async-метод без await выполнит своё тело синхронно и обычно вызовет предупреждение CS1998. Сам модификатор async не переносит работу в другой поток.

Для async Task/Task<T> после выполнения возвращается завершённая задача либо задача с ошибкой, если тело выбросило исключение. Это отличается от обычного синхронного метода, непосредственно выбрасывающего исключение вызывающему коду.

Если асинхронной работы нет, часто лучше убрать async и вернуть Task.CompletedTask или Task.FromResult. При такой переработке нужно сохранить ожидаемую семантику ошибок. Async void следует оставлять главным образом для событий: его ошибки не возвращаются через Task.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее