Есть класс содержащий в себе флаг(булево) и лист самого себя. И есть метод, заполняющий экземпляр данного класса через индексы листа. class nod{bool f;List<nod> list;}_________nod CreateNod(){nod final = new nod();final.list = new List<nod>();nod k = new nod();k.f = false;for (int i = 0; i<5 ;i++){ final.list.Add(k); if (некоторое условие) { final.list[0].f=true; }}Почему при изменении булева в одном элементе листа меняются не только все булевы в этом экземпляре, но и перезаписывается другой экземпляр того же класса?>nod k = new nod();Анон, поясни за компиляцию такой рекурсии.C#,microsoft VS2015
бамп
Во-первых, есть закрепленный.Во-вторых, твой код - говно.В-третьих, у тебя в списке ссылка на один и тот же объект k пять раз, понятное дело что если ты поменяешь поле в одном элементе списка, то и в других оно тоже поменяется.
>>655744получается я меняю изначально k, а потом final ссылается на него каждый раз?
>>655753for (int i = 0; i<5 ;i++){nod k = new nod();final.list.Add(k);...}Тогда в списке будет пять разных объектов, каждый со своим значением поля f.
>>655757примерно понял. Выходит если я добавляю элемент листа, то я должен выделять на него отдельную память. Если есть еще подобные примеры, покидайте для точности моего недалекого восприятия.