链接列表 - 对象引用未设置为对象实例
Linked List - Object reference not set to instance of object
我正在编写一个将新节点添加到链表后面的方法:
public void add(string title, string director, int year, double cost)
{
Node newNode = new Node();
newNode.disc = new BluRayDisc(title, director, year, cost);
Node holder = new Node();
holder = first;
while (holder.next != null) //object reference error
{
holder = holder.next;
}
holder.next = newNode;
}
但我收到“System.NullReferenceException: 'Object reference not set to an instance of an object.'”错误。
'first' 节点初始化为空,所以我假设这就是我的问题所在。
这是我的第一个链表,它完全遵循我得到的 addToBack 方法的示例。有没有人对这个问题有所了解?
如您所述,问题在于变量“first”被初始化为空。它应该设置为您正在构建的链表的第一个节点。
几个问题:
first
可以是null
,当你从一个空链表开始时就是这种情况,在那种情况下first.next
是一个无效引用。
关于:Node holder = new Node();
。没有必要在此处使用 new Node()
创建一个新节点,因为在下一个语句中,您将通过执行 holder = first;
来丢弃该节点
更正如下:
public void add(string title, string director, int year, double cost)
{
Node newNode = new Node();
newNode.disc = new BluRayDisc(title, director, year, cost);
if (first == null) {
first = newNode;
return;
}
holder = first;
while (holder.next != null) //object reference error
{
holder = holder.next;
}
holder.next = newNode;
}
我正在编写一个将新节点添加到链表后面的方法:
public void add(string title, string director, int year, double cost)
{
Node newNode = new Node();
newNode.disc = new BluRayDisc(title, director, year, cost);
Node holder = new Node();
holder = first;
while (holder.next != null) //object reference error
{
holder = holder.next;
}
holder.next = newNode;
}
但我收到“System.NullReferenceException: 'Object reference not set to an instance of an object.'”错误。
'first' 节点初始化为空,所以我假设这就是我的问题所在。 这是我的第一个链表,它完全遵循我得到的 addToBack 方法的示例。有没有人对这个问题有所了解?
如您所述,问题在于变量“first”被初始化为空。它应该设置为您正在构建的链表的第一个节点。
几个问题:
first
可以是null
,当你从一个空链表开始时就是这种情况,在那种情况下first.next
是一个无效引用。关于:
来丢弃该节点Node holder = new Node();
。没有必要在此处使用new Node()
创建一个新节点,因为在下一个语句中,您将通过执行holder = first;
更正如下:
public void add(string title, string director, int year, double cost)
{
Node newNode = new Node();
newNode.disc = new BluRayDisc(title, director, year, cost);
if (first == null) {
first = newNode;
return;
}
holder = first;
while (holder.next != null) //object reference error
{
holder = holder.next;
}
holder.next = newNode;
}