Что выведет код Middle async/await и Task спрашивают часто обновлено

Синхронная часть async-метода

Вопрос

Что выведет программа (.NET 8)? По строке на каждый вывод.

Console.WriteLine("1");
var t = Work();
Console.WriteLine("3");
await t;
Console.WriteLine("5");

static async Task Work()
{
    Console.WriteLine("2");
    await Task.Delay(100);
    Console.WriteLine("4");
}

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: 1, 2, 3, 4, 5. Async-метод выполняется синхронно до первого незавершённого await: после 1 сразу печатается 2.

Что выведет

1
2
3
4
5

Разбор

Async-метод выполняется синхронно до первого незавершённого await: после 1 сразу печатается 2. На Task.Delay метод возвращает задачу, и вызывающий печатает 3. Через 100 мс продолжение печатает 4, и только после завершения t выполняется 5.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме