在"C#中List<T>是怎么存放元素的"中,分析了List<T>的源码,了解了List<T>是如何存放元素的。这次,就自定义一个泛型集合类型,可实现添加元素,并支持遍历。
该泛型集合类型一定需要一个添加元素的方法,在添加元素的时候需要考虑:当添加的元素超过当前数组的容量,就让数组扩容;为了支持循环遍历,该泛型集合类型必须提供一个迭代器(实现IEnumerator接口)。
public class MyList<T>{T[] items = new T[5];PRivate int count;public void Add(T item){if(count == items.Length)Array.Resize(ref items, items.Length * 2);items[count++] = item;}public IEnumerator<T> GetEnumerator(){return new MyEnumeraor(this);}class MyEnumeraor : IEnumerator<T>{private int index = -1;private MyList<T> _myList;public MyEnumeraor(MyList<T> myList){_myList = myList;}public T Current{get{if (index < 0 || index >= _myList.count){return default(T);}return _myList.items[index];}}public void Dispose(){}object System.Collections.IEnumerator.Current{
新闻热点
疑难解答