Вприницпе согласен, момент с захватом переменной в цикле (как это в фориче) более подробно разобрал в статье.Спасибо за подсказку с таким неочивидным моментом
В этом случае стоит только запомнить, что сейчас форич возвращает нам каждый раз новую переменную, в отличии от for. Поэтому под капотом именно в цикле форич будет создаваться класс, метод которого мы сделали как лямбду. И каждый экземпляр этого класса ссылается на свое значение.
try
{
while (enumerator.MoveNext())
{
Program.<>c__DisplayClass0_0 cDisplayClass00 = new Program.<>c__DisplayClass0_0();
cDisplayClass00.i = enumerator.Current;
action = (Action) Delegate.Combine((Delegate) action, (Delegate) new Action((object) cDisplayClass00, __methodptr(<Main>b__0)));
}
}
finally
{
enumerator.Dispose();
}
Вещь неочивидная, но тут только стоит помнить о переменной в фориче, как она возвращается + во что раскроется лямбда.
class Program
{
static void Main(string[] args)
{
Strange strange = new("third");
}
}
class Strange {
public static Strange s = new Strange("first");
static Strange(){
Console.WriteLine("second");
}
public Strange(string str){
Console.WriteLine(str);
}
}
В таком случае у вас все будет по порядку - сначала идет работа стат конструктора (поля + сам конструктор). И как раз поле для статики будет первой (у нее сработает конструктор 1 раз только тк это статика). После стат конструктора идет обычный конструкор уже нашего класса. Всё логично и правильно. Главное не делать поле такого же класса обыным (не статик), а то стек упадёт
Подскажите подробнее, что вас именно смутило? Просто я копирую все что связано со сборкой. Нугет пакеты после рестора уйдут в свою папку, которую я не трогаю
Достаточно. Но чтобы все было «более читаемым» и можно было сразу определить на каком именно моменте что то пошло не так - делают примерно как описано в статье. Даже райдер делает автоматический докерфайл примерно таким
спасибо за комментарии, что решил нужным - учёл. А так как раз собирался комплексом поместить работу с ивентами в отдельную статью, чтобы лучше видеть разницу, что и как где работает\используется
При вызове комбинированного делегата выполняются все делегаты в цепочке, но результат от последнего делегата будет возвращён. Это базовое знание должно уже присутствовать при чтении этой статьи, поэтому и не писал нигде, что статья для ребят, которые только начали изучать шарпы..
Вприницпе согласен, момент с захватом переменной в цикле (как это в фориче) более подробно разобрал в статье.Спасибо за подсказку с таким неочивидным моментом
В этом случае стоит только запомнить, что сейчас форич возвращает нам каждый раз новую переменную, в отличии от for. Поэтому под капотом именно в цикле форич будет создаваться класс, метод которого мы сделали как лямбду. И каждый экземпляр этого класса ссылается на свое значение.
Вещь неочивидная, но тут только стоит помнить о переменной в фориче, как она возвращается + во что раскроется лямбда.
В таком случае у вас все будет по порядку - сначала идет работа стат конструктора (поля + сам конструктор). И как раз поле для статики будет первой (у нее сработает конструктор 1 раз только тк это статика). После стат конструктора идет обычный конструкор уже нашего класса. Всё логично и правильно. Главное не делать поле такого же класса обыным (не статик), а то стек упадёт
спасибо за подсказку, в статье этот момент исправил
Подскажите подробнее, что вас именно смутило? Просто я копирую все что связано со сборкой. Нугет пакеты после рестора уйдут в свою папку, которую я не трогаю
Достаточно. Но чтобы все было «более читаемым» и можно было сразу определить на каком именно моменте что то пошло не так - делают примерно как описано в статье. Даже райдер делает автоматический докерфайл примерно таким
спасибо за комментарии, что решил нужным - учёл. А так как раз собирался комплексом поместить работу с ивентами в отдельную статью, чтобы лучше видеть разницу, что и как где работает\используется
При вызове комбинированного делегата выполняются все делегаты в цепочке, но результат от последнего делегата будет возвращён. Это базовое знание должно уже присутствовать при чтении этой статьи, поэтому и не писал нигде, что статья для ребят, которые только начали изучать шарпы..
low-level c# *
случайно написал про IL)