全局声明的变量在方法调用后返回Null



我正试图在C#中创建一个LinkedList。我是新手。你能帮我一下吗?我想做的是:我创建了Node类型的head和lastNode变量,并试图通过GetLastNode()方法检查lastNode,将Node添加到之前的每个节点中。尽管如此,每次我尝试添加第二个元素时,head在到达GetLastNode()时都会变为null。我不知道为什么会发生这种事。请帮我理解我错过的概念。

class MyLinkedList
{
Node head, lastNode; 

public void Add(int new_value)
{
Node new_node = new Node(new_value);                
MyLinkedList obj = new MyLinkedList();
lastNode = obj.GetLastNode();
if(lastNode == null)
{
lastNode = new_node;
this.head = new_node;
}                  

else
{
lastNode.next = new_node;
}
}
public Node GetLastNode()
{
Node currentNode = this.head;
if (currentNode == null)
lastNode = currentNode;
else
while (currentNode != null)
{
lastNode = currentNode;
currentNode = currentNode.next;
}

return lastNode;
}
}

headlastNode不是全局的,它们是字段,对于MyLinkedList的每个实例都会有所不同。在Add中,您的a创建了MyLinkedList的新实例(使用new关键字(,该实例为GetLastNode()返回null,并将该null分配给当前lastNode,因此您将在if:之前为当前lastNode使用null

MyLinkedList obj = new MyLinkedList();
lastNode = obj.GetLastNode();

我想说你可以删除这几行。

此外,似乎GetLastNode应该只返回lastNode,因为您已经在Add:上进行了所有需要的跟踪

public Node GetLastNode()
{
return lastNode;
}

相关内容

  • 没有找到相关文章

最新更新