@keddad
Ученик

Почему происходит NullReferenceException при добавлении экземпляра класса в лист?

У меня есть такой класс:
class Node {
        public DirectoryInfo basePath;

        public List<Node> children;

        private void getChildren(DirectoryInfo path){
            foreach(DirectoryInfo dir in path.GetDirectories()){
                children.Add(new Node(dir));
            }
        }

        public Node(DirectoryInfo path){
            this.basePath = path;

            getChildren(path);
        }
        

    }


Эта штука, теоретически, рекурсивно обходит директории. Проблема в том, что при добавлении нового экземпляра Node в список случается NullReferenceExpetion:
Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
   at sharpgame.Node.getChildren(DirectoryInfo path) in /home/keddad/projects/sharpgame/Stuff/GameField.cs:line 13
   at sharpgame.Node..ctor(DirectoryInfo path) in /home/keddad/projects/sharpgame/Stuff/GameField.cs:line 20
   at sharpgame.Node.getChildren(DirectoryInfo path) in /home/keddad/projects/sharpgame/Stuff/GameField.cs:line 13
   at sharpgame.Node..ctor(DirectoryInfo path) in /home/keddad/projects/sharpgame/Stuff/GameField.cs:line 20
   at sharpgame.GameField..ctor(DirectoryInfo folder) in /home/keddad/projects/sharpgame/Stuff/GameField.cs:line 33
   at sharpgame.Program.Main(String[] args) in /home/keddad/projects/sharpgame/Program.cs:line 7


Я не вполне понимаю, как он может там происходить. 13ая строчка - добавление новой ноды в список:
children.Add(new Node(dir));
Если я правильно понимаю, мы передаем в список экзепляр класса, там неоткуда взяться Nullу. У меня практически нет опыта с C#, так что, вероятно, это довольно примитивная ошибка, но я не могу ее найти :(
  • Вопрос задан
  • 59 просмотров
Решения вопроса 1
FoggyFinder
@FoggyFinder
List нужно предварительно инициализировать:

public List<Node> children = new List<Node>();

Но, обычно, публичные поля это далеко не лучшая стратегия.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Emsoft Москва
от 110 000 до 180 000 ₽
Tennisi Москва
от 170 000 ₽
ITM Холдинг Екатеринбург
от 70 000 ₽
19 февр. 2020, в 02:24
500 руб./за проект
18 февр. 2020, в 23:53
8000 руб./за проект