我想從鏈接列表中刪除節點。以下是我嘗試過的代碼。如何處理對象
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