У меня есть такой класс:
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#, так что, вероятно, это довольно примитивная ошибка, но я не могу ее найти :(