C# IEnumerable接口


問: 集合很好用,而且非常簡單,但是我不明白 為什么數組、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。
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM