小弟初写博文,深感“易敲千行码,难下百余文”的道理。
内容粗略浅薄,望各位大神海涵!
//泛型 --泛指某一个类型。这种类型需要用户自己确定 List<string> lists = new List<string>(); //添加元素 lists.Add("aa"); lists.Add("bb"); //遍历元素时不用转换类型
foreach (string item in lists) { Console.WriteLine(item); } lists[0] = "abcde"; lists.RemoveAt(0); for (int i = 0; i < lists.Count; i++) { Console.WriteLine(lists[i]); } Console.ReadKey();
//类的参数一般就是指类型参数 class MyList<T>: { T[] items=new T[4]; int count; // 集合中元素个数 public int Count { get { return count; } //set { count = value; } } // 添加元素 public void Add(T value) { if (this.Count == items.Length) { T[] newItems = new T[items.Length * 2]; items.CopyTo(newItems, 0); items = newItems; } items[count] = value; count++; } // 索引器 public T this[int index] { get { if (index < 0 || index >= this.Count) { throw new ArgumentOutOfRangeException("no"); } return items[index]; } set { if (index < 0 || index >= this.Count) { throw new ArgumentOutOfRangeException("no"); } items[index] = value; } }
错误:“泛型的实现.MyList<int>”不包含“GetEnumerator”的公共定义,
因此 foreach 语句不能作用于“泛型的实现.MyList<int>”类型的变量。
public interface IEnumerable { [DispId(-4), __DynamicallyInvokable] IEnumerator GetEnumerator(); }
class MyEnumerator<T> : IEnumerator { T[] items; //类型的数组 int num; //数组有效长度 int index = -1; //迭代指针默认在-1的位置 //构造函数, public MyEnumerator(T[] items, int num) { this.items = items; this.num = num; } //获取当前元素的值 public object Current { get { return items[index]; } } //先判断有没有下一个元素,如果有就将枚举数推进到下一个元素 public bool MoveNext() { index++; if (index >= num) { return false; } return true; } #endregion // 迭代重置 public void Reset() { index = -1; } }
//IEnumerable 成员--实现迭代 public IEnumerator GetEnumerator() { //你必须得返回一个实现了IEnumerator接口的类对象 return new MyEnumerator<T>(items, Count); }
原文地址:http://www.cnblogs.com/lant-li/p/3843840.html