IEnumerable {
} IEnumerator {
Current { }
看我們手動自定義的Student類,以及Student1,StudentEnum類(分別繼承了IEnumerable,IEnumerator接口),上代碼
Student( name,
.Name = .Score =
students = ( i = ; i < stArray.Length; i++ students[i] =
position = -
students =
position++ position >= students.Length ? :
position = -
Main( Student[] studentArrary = Student[
Student(, Student(, Student1 studenlist = (Student item
Console.WriteLine(item.Name + +
}
?
1、一個Collection要支持foreach方式的遍歷,必須實現IEnumerable接口(亦即,必須以某種方式返回IEnumerator object)。
2、IEnumerator object具體實現了iterator(通過MoveNext(),Reset(),Current)。
3、從這兩個接口的用詞選擇上,也可以看出其不同:IEnumerable是一個聲明式的接口,聲明實現該接口的class是“可枚舉(enumerable)”的,但並沒有說明如何實現枚舉器(iterator);IEnumerator是一個實現式的接口,IEnumerator object就是一個iterator。
4、IEnumerable和IEnumerator通過IEnumerable的GetEnumerator()方法建立了連接,client可以通過IEnumerable的GetEnumerator()得到IEnumerator object,在這個意義上,將GetEnumerator()看作IEnumerator object的傳遞方法。