Что выведет код 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 ошибок.