問: 集合很好用,而且非常簡單,但是我不明白 為什麼數組、ArrayList 和 Hasttable 這些集合都能用foreach直接遍歷呢?我想自己定義一個集合類,應該怎麼做呢? 回答:這個問題問的好,如果查看ArrayList和Hasttable定義可以看到 ,她們都實現了 和 介面,這就是能用 ...
問: 集合很好用,而且非常簡單,但是我不明白 為什麼數組、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。