我想从链接列表中删除节点。以下是我尝试过的代码。如何处理对象
public class Node : IDisposable
{
public int Value { get; set; }
public Node Next { get; set; }
public Node(int value)
{
this.Value = value;
}
public void Dispose()
{
Dispose(true);
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
Next.Dispose();
}
}
}
public class LinkedList
{
Node head;
public void CreateList()
{
Node node1 = new Node(1);
Node node2 = new Node(2);
Node node3 = new Node(3);
head = node1;
node1.Next = node2;
node2.Next = node3;
}
public void DeleteLastItem()
{
Node prevNode = head;
Node nextNode = head;
while (nextNode.Next != null)
{
prevNode = nextNode;
nextNode = nextNode.Next;
}
prevNode.Next = null;
nextNode.Dispose();
}
}
我想处置nextNode
(这是什么,但最后一个节点。它不会是链表的一部分)。
当我尝试上面的代码中,我得到以下异常:
未处理的异常:System.NullReferenceException:对象不设置到对象的实例。
我该怎么办?我如何处置一个Node
对象?
什么让你觉得一个'Node'需要处置的?另外,为什么要编写自己的链接列表而不是使用[内置的](http://msdn.microsoft.com/zh-cn/library/he2s3bh7.aspx)? – Jon 2013-04-24 14:21:28
@Jon可以用于学习目的。 – OmniOwl 2013-04-24 14:21:54
我知道GC会自动配置节点。此外,LinkedList类存在.NET。我这样做只是为了我的兴趣去了解内部的事情。 – SKJ 2013-04-24 14:23:34