問: 集合很好用,而且非常簡單,但是我不明白 為什么數組、ArrayList 和 Hasttable 這些集合都能用foreach直接遍歷呢?我想自己定義一個集合類,應該怎么做呢?
回答:這個問題問的好,如果查看ArrayList和Hasttable定義可以看到 ,她們都實現了
和
接口,這就是能用foreach的關鍵所在。


看一下數組的遍歷:


那么如果我們自定義的類,能不能也像對數組一樣進行遍歷呢?
我們先試一下:




運行結果出現錯誤:


遍歷原理:要想使用foreach對自定義的集合類進行遍歷,需要實現IEnmuerable接口。
(1)因為IEnmuerable接口有一個返回循環訪問集合的枚舉器IEnumerator




(2)枚舉器IEnumerator接口


使用foreach時,枚舉器IEnumerator會編譯成如下代碼,實現了查找數據功能(對外界是foreach語法)


具體實現方案:
(1)在DepartMent類添加


然后讓該類繼承IEnumerator接口


(2)將光標定在


上,然后按alt +shift+F10,選擇


選擇第一項
(3)會出現這個


(4)改成這樣


(5)這樣就能用foreach遍歷類了。


下面再看一下System.Colliction命名空間下的另一接口:ICollection 。他繼承自IEnumerable。

