(1)自訂泛型鏈表類。
複製代碼 代碼如下:public class GenericList<T>
{
private class Node
{
//當前節點值
private T data;
public T Data
{
get { return data; }
set { data = value; }
}
//節點的下一個節點
private Node next;
public Node Next
{
get { return next; }
set { next = value; }
}
//節點的上一個節點
private Node last;
public Node Last
{
get { return last; }
set { last = value; }
}
public Node(T t)
{
data = t;
next = null;
}
}
private Node firstNode;
private Node lastNode;
public void AddNode(T t)
{
Node node = new Node(t);
node.Last = lastNode;
if (lastNode != null)
lastNode.Next = node;
lastNode = node;
if (firstNode == null)
{
firstNode = node;
}
}
//要在自訂泛型集合上迭代
//必須實現該介面
public IEnumerator<T> GetEnumerator()
{
Node current = firstNode;
while (current != null)
{
//yield return運算式以枚舉對象返回
yield return current.Data;
current = current.Next;
}
}
}
(2)自訂泛型鏈表類調用。
複製代碼 代碼如下:class GenericListTestTwo
{
static void Main()
{
// 型別參數為int
GenericList<int> list = new GenericList<int>();
for (int a = 0; a < 5; a++)
{
list.AddNode(a);
}
foreach (int i in list)
{
System.Console.WriteLine(i);
}
//型別參數為string
GenericList<string> strList = new GenericList<string>();
strList.AddNode("First Node");
strList.AddNode("Second Node");
foreach(string s in strList)
{
System.Console.WriteLine(s);
}
Console.Read();
}
}
輸出如下: