自我指涉课

时间:2016-08-30 19:27:02

标签: c# class pointers

尝试为可以拥有父级和子级列表的目录编写类。

班级定义:

class Directory {
    public string name;
    public Directory parentDir;
    public List<Directory> subDirs;

    public Directory(string name) {
        this.name = name;
    }

    public void addSubDir(Directory x) {
        subDirs.Add(x);
    }
}

尝试创建两个实例并将一个实例设置为另一个实例的示例代码:

Directory temp1 = new Directory("root");

Directory temp2 = new Directory("games");

temp1.addSubDir(temp2);

我得到的错误是:

System.NullReferenceException was unhandled
  Message=Object reference not set to an instance of an object.

1 个答案:

答案 0 :(得分:2)

你从未实例化过这个

public List<Directory> subDirs;

将其更改为:

public List<Directory> subDirs = new List<Directory>();

既然你把它放在标题中,我想我会发表评论。你的错误与自我引用课程没有任何关系(这样做完全没问题)。如果能够执行此操作时出错,则会出现编译时错误,而不是运行时错误。