C#迭代器與索引 簡單樣本
迭代器是一種設計思想和設計模式,在C#中可以方便的實現一個迭代器,即實現Ienumerator介面。例如我有一個student類,現在想封裝一個studentCollection,代碼是這樣的:
Student類:
StudentCollection類:
很簡單的封裝,僅有一個欄位,那就是studentList,類型是list<Student>,實現Ienumerator介面的代碼我藉助了studentList,因為這個類實現了這個介面,因此拿來用就好了。這樣我就可以對studentCollection進行foreach遍曆了:
代碼說明:
1. new一個studentCollection對象,並使用初始化器一一初始化每一個student對象
2. 用foreach遍曆每一個student
3. 取得每一個人的名字累加到字串,然後彈出提示框顯示
有其他方式實現Ienumerator這個介面嗎?答案是肯定的,代碼如下:
public IEnumerator GetEnumerator() { foreach (Student s in studentList) { yield return s;////使用yield關鍵字實現迭代器 } }
關於索引符以及索引符重載:
細心的讀者可能已經發現了,在studentCollection類中,我定義了兩個索引符:
////通過索引來訪問
public Student this[int index] { get { return studentList[index]; } }
////通過學生姓名來訪問
public Student this[string name] { get { return studentList.Single(s => s.StudentName == name); } }
索引符重載機制使得封裝顯得更靈活,更強大。
以上就是c# 索引與迭代器的範例程式碼詳解的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!