Рассмотрим следующий код на C#:
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var tasks = new List<Task>();
for (int i = 0; i < 5; i++)
{
tasks.Add(Task.Run(() => Console.WriteLine($"Значение i = {i}")));
}
await Task.WhenAll(tasks);
}
}
Вопросы:
Что выведет эта программа при запуске и почему?
Как минимально изменить код (не затрагивая содержимое Task.Run), чтобы на консоль выводились числа от 0 до 4 (по одному разу каждое)?
Подсказка: лямбда внутри Task.Run замыкает переменную i, а не её текущее значение.
@csharp_ci