以#是一種設計想法和設計模式,在##C
#中可以方便的實作一個迭代器,即實作Ienumerator接口。例如我有一個student類,現在想封裝一個studentCollection,程式碼是這樣的: #Student類別:
StudentCollection類別:
##很簡單的封裝,僅有一個字段,那就是studentList,
#類型是list##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# 索引與迭代器的範例程式碼詳解的內容,更多相關內容請關注PHP中文網(www.php.cn)!
#