C#中foreach的實作原理
在探討foreach如何內部如何實作這個問題之前,我們需要理解兩個C#里邊的介面,IEnumerable 與 IEnumerator. 在C#里邊的遍歷集合時用到的相關類中,IEnumerable是最基本的介面,這是一個可以進行泛型化的介面,比如說IEnumerable<User>.在微軟的.NET推出了這兩個介面后,才有了foreach的用法,可以說,foreach是建立在這兩個介面的基礎之上的,foreach的前提是其里邊的容器要實作了IEnumerable介面,
IEnumerable 這個介面里邊定義的內容非常簡單,最重要的就是里邊有一個抽象方法GetEnumerator. IEnumerable的意思是這個集合是可以遍歷的,而這個GetEnumerator方法回傳的IEnumerator的就是一個遍歷器,用這個工具來遍歷這個類,如果說IEnumerable 是一瓶香檳,那么IEnumerator就是一個開瓶器,在實作這個IEnumerable介面的時候,必須要實作這個GetEnumerator方法,要回傳一個實體化的IEnumorator.
下面來介紹一下這個IEnumorator介面,這個介面中定義的內容也很簡單,包括Current,就是回傳這個遍歷工具所指向的那個容器的當前的元素,MoveNext 方法就是指向下一個元素,當遍歷到最后沒有元素時,回傳一個false.當我們實作一個IEnumerable類的時候,我們的目的就應該是遍歷這個集合,所以同時我們要實作IEnumerator這個工具類,定義我們自己的邏輯來告訴CLR我們怎么去遍歷這個集合,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/6405.html
標籤:C#
上一篇:MySql查詢資料
下一篇:C#6.0新特性
