问题描述
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:'对象引用未设置为对象的实例。'”错误抛出。
'first' 节点被初始化为 null,所以我假设这就是我的问题的来源。 这是我的第一个链表,它遵循我给出的 addToBack 方法的示例。有没有人对这个问题有一些见解?
解决方法
正如您所提到的,问题在于变量“first”被初始化为 null。它应该设置为您正在构建的链表的第一个节点。
,一些问题:
-
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;
}