回覆列表
  • 1 # 藍風24

    陣列可以被foreach語句遍歷陣列中的元素,原因是陣列可以按需提供一個叫做列舉數(enumerator)的物件.列舉數可以依次返回請求的陣列的元素.

    對於有列舉數的型別而言,必須有一個方法來獲取它們.在.NET中獲取一個物件列舉數的標準用法是呼叫物件的GetEnumerator方法.實現GetEnumerator方法的型別叫做可列舉型別(enumerable),陣列就是可列舉型別.

    要注意列舉數(enumerator)和可列舉型別(enumerable)的區別和聯絡.

    列舉數是可以依次返回集合項的類物件,可列舉型別是帶有GetEnumerator方法的型別,它返回列舉數.

    當foreach被用來遍歷可列舉型別時,它就會執行如下的行為:

    1,透過呼叫GetEnumerator方法獲取物件的列舉數.

    2,從列舉數中請求每一項並且把它作為迭代變數,程式碼可以讀但不可以改變.

    列舉數共有3種,可以用以下方式來實現列舉數:

    1 IEnumerator/IEnumerable介面 ,叫做非泛型介面形式.

    2 IEnumerator

    3 不使用介面形式.

    IEnumerator介面

    IEnumerator介面包含3個函式成員:Current,MoveNext,Reset

    Current返回序列中當前項的屬性,它是一個只讀屬性.返回object型別的引用,所以可以返回任何型別.

    MoveNext是把列舉數位置前進到集合的下一項的方法,它返回布林值,指示新位置是有效位置還是已經超過了序列的尾部.如果是已經到達了尾部,則返回false.

    Reset方法把位置重置為原始狀態.

  • 中秋節和大豐收的關聯?
  • 華為榮耀6在哪裡換電池啊,要多少錢?