使用泛型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
    }

 

posted @ 2021-01-29 10:45  狼窝窝  阅读(405)  评论(0)    收藏  举报