// type parameter T in angle brackets
public class GenericList<T>
{
// The nested class is also generic on T
private class Node
{
// T used in non-generic constructor
public Node(T t)
{
next = null;
data = t;
}
private Node next;
public Node Next
{
get { return next; }
set { next = value; }
}
// T as private member data type
private T data;
// T as return type of property
public T Data
{
get { return data; }
set { data = value; }
}
}
private Node head;
// constructor
public GenericList()
{
head = null;
}
// T as method parameter type:
public void AddHead(T t)
{
Node n = new Node(t);
n.Next = head;
head = n;
}
public IEnumerator<T> GetEnumerator()
{
Node current = head;
while (current != null)
{
yield return current.Data;
current = current.Next;
}
}
}
我有麻煩找出了幾行,即這些:
Node n = new Node(t);
n.Next = head;
head = n;
對我來說,它看起來像你正在創建節點的新實例,一些數據參數,然後將其設置爲下一鏈表中的節點(我認爲它是更有意義的是先前),然後將該節點分配給頭,這對我來說是沒有意義的。
我已經在調試中加入了一堆代碼,但仍然無法弄清楚究竟發生了什麼。有人可以走我嗎?