17 多数情况使用foreach进行循环遍历简单
foreach两个有点:语法更简单,默认调用Dispose方法;
缺点:不支持循环是对集合进行增删操作。
static void Main(string[] args) { IMyEnumerable list = new MyList(); IMyEnumerator enumerator = list.GetEnumerator(); } interface IMyEnumerator { bool MoveNext(); object Current { get; } } interface IMyEnumerable { IMyEnumerator GetEnumerator(); int Count { get; } } class MyList : IMyEnumerable { object[] items = new object[10]; IMyEnumerator myEnumerator; public object this[int i] { get { return items[i]; } set { this.items[i] = value; } } public int Count { get { return items.Length; } } public IMyEnumerator GetEnumerator() { if (myEnumerator == null) { myEnumerator = new MyEnumerator(this); } return myEnumerator; } } class MyEnumerator : IMyEnumerator { int index = 0; MyList myList; public MyEnumerator(MyList myList) { this.myList = myList; } public bool MoveNext() { if (index + 1 > myList.Count) { index = 1; return false; } else { index++; return true; } } public object Current { get { return myList[index - 1]; } } }
Stay hungry, stay foolish

浙公网安备 33010602011771号