C#——实现泛型List

C#用数组实现List<>

    class Program
    {
        static void Main(string[] args)
        {
            MyList<int> myList = new MyList<int>();
            myList.Add(20);
            myList.Add(45);
            myList.Add(67);
            myList[1] = 90;
            myList.PrintSelf();
            Console.WriteLine("-------------------------------------");
            MyList<string> listStr = new MyList<string>();
            listStr.Add("hello");
            listStr.Add("C#");
            listStr.Add("Unity");
            listStr.RemoveAt(1);
            listStr.PrintSelf();
        }
    }

    //----------------------------------------------
    public class MyList<T>   //也可以对T进行约束Where
    {
        //内部存储
        T[] memery;
        int len;
        public MyList()
        {
            memery = new T[2];
            len = 0;
        }

       public  void Add(T n)
        {
            if (len >= memery.Length)
            {
                T[] mem_New = new T[memery.Length*2];   //2倍
                memery.CopyTo(mem_New,0);
                memery = mem_New;
            }
            memery[len] = n;
            len++;
        }

        public void RemoveAt(int index)
        {
            if (len <= index||len<0)
            {
                Console.WriteLine("RemoveAt下标越界");
                return;
            }
            for (int i = index+1; i < len; i++) //把后面的移动到前面
            {
                memery[i - 1] = memery[i];
            }
            len--;
        }

        public  int Count()
        {
            return len;
        }
        public T Get(int index)
        {
            return memery[index];
        }
        public void PrintSelf()
        {
            for (int i = 0; i < len; i++)
            {
                Console.WriteLine(memery[i]);
            }
        }
        public T this[int index]   //构造索引器
        {
            get
            {
                if (index < 0 || index > len)
                    return default(T);
                return memery[index];
            }
            set
            {
                if (index < 0 || index > len)
                    return;
                memery[index] = value;
            }
        }
    }

猜你喜欢

转载自blog.csdn.net/noEnoughChief/article/details/80669089
今日推荐