自我引用类

本文关键字:引用 自我 | 更新日期: 2023-09-27 18:05:02

尝试为一个目录编写一个类,该目录可以有父目录和子目录列表。

类定义:

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.

自我引用类

您从未实例化此

public List<Directory> subDirs;

改成:

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

既然你把它放在你的标题中,我想我应该评论一下。您的错误与自我引用类没有任何关系(这样做完全可以)。如果能够这样做是一个错误,那么您将得到一个编译时错误,而不是运行时错误。