使用泛型T实现List<>的简单功能
调用:
static void Main(string[] args) { MyList<int> list = new MyList<int>(); for (int x = 0; x < 10; x++) list.AddHead(x); foreach (int i in list) { Console.WriteLine(i); } Console.WriteLine("Done"); Console.ReadKey(); }
MyList<T> 类及方法
public class MyList<T> { private Node head; #region 内部类 private class Node { private Node next; private T data; /// <summary> /// Node构造函数 /// </summary> /// <param name="t"></param> public Node(T t) { next = null; data = t; } /// <summary> /// Node类的 公共属性访问器 /// </summary> public Node Next { get { return next; } set { next = value; } } /// <summary> /// T类型 公共属性访问器 /// </summary> public T Data { get { return data; } set { data = value; } } } #endregion #region Mylist构造函数 public MyList() { head = null; } #endregion #region 提供一个方法 public void AddHead(T t) { Node n = new Node(t); n.Next = head; head = n; } #endregion #region 遍历并返回遍历的每个值 /// <summary> /// IEnumerable是系统接口,如果某个类要支持遍历就必须支持此接口 /// </summary> /// <returns></returns> public IEnumerator<T> GetEnumerator() { Node current = head; while (current != null) { yield return current.Data; // yield return 迭代时的简单写法 可以省去不少代码量 yield break 表示跳出迭代 current = current.Next; //返回后将current重新赋值 } } #endregion }