Чему научился:
Нашел отличный пример как работает замыкание
static void Main(string[] args) { // работает также как и переменная i int t = 7; //замкнутая переменная i будет изменятся при каждой итерации и к концу цикла будет равна 6. //Именно поэтому делегат выведет пять шестерок. for (int i = 1; i <= 5; i++) { // переменная j создается и инстанциируется внутри цикла на каждой итерации. Переменные замыкаются в своей области видимости. // j будет замкнута внутри области видимости цикла и будет неизменна (фактически, будет созданно пять экземпляров переменной j, // каждая из которых получит свое значение), и делегат выведет 1 2 3 4 5 // Главное показать, что если j будет уничтожена каждый цикл и создаваться заново, то связь делегата будет сохранена со старой переменной j // ( в каждом цикле будут созданы сови "клоны" j) - произойдет замыкание. int j = i; new Thread(delegate () { // задержка , которой точно хватит, чтоб цикл отработал, когда i станет = 6 // чтоб показать разницу в работе между i и j Thread.Sleep(100); Console.Write($"j={j} | i={i} | k = {t}\n"); }).Start(); }
Научился: совершенно новая для меня область. лямбда-операторамы. немного стало понятно о том где и как применять LINQ. Хочу похвалить автора, очень хорошая подача. очень понравилось разъяснение работы кода! Спасибо за этот мини-курс.
Трудности: даже с 10 ого раза до конца не проникся, думаю это придет с практикой. ..