@FlashDok

Почему перезаписывается весь list в class?

На первую итерацию записывается значение 2, а не 1
На вторую итерацию 3, т.е первая итерация вообще пропускается, также 1 элемент списка имеет id = 3 и 2ой элемент списка имеет id = 3
Т.е у всех элементов в списке перезаписываются id на id текущей итерации.

class Checker
    {
        public int id;
        public List<Checker> list = new List<Checker>();

        public void add()
        {
            list.Add(this);
        }
    }

    class Check
    {
        Checker checker = new Checker();

        public void test()
        {
            int[] ints = { 1, 2, 3 };
            foreach (int i in ints)
            {
                checker.id = i;
                checker.add();
            }
        }
    }
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
@FlashDok Автор вопроса
Решение
class Checker
    {
        public int id;
        public List<Checker> list = new List<Checker>();

        public void add(Checker check)
        {
            list.Add(check);
        }
    }

    class Check
    {
        Checker checker = new Checker();
        public void test()
        {
            int[] ints = { 1, 2, 3 };
            foreach (int i in ints)
            {
                var checkerChild = new Checker();
                checkerChild.id = i;
                checker.add(checkerChild);
            }
        }
    }
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
freeExec
@freeExec
Участник OpenStreetMap
Т.е у всех элементов в списке перезаписываются id на id текущей итерации.

У вас всего 1 элемент - Checker checker = new Checker();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы