2010-06-16 32 views

回答

11

Array實現IEnumerable。

在.NET Framework 2.0版中, 陣列類實現 System.Collections.Generic.IList(T), 了System.Collections.Generic.ICollection(T), :從DOC報價和 System.Collections.Generic.IEnumerable(T) 通用接口。 實現在運行時提供給陣列 ,因此不是 工具對文檔構建 可見。其結果是,通用 接口不出現在陣列 類 聲明語法,並沒有參考 主題爲接口的成員,只有鑄造數組 通用接口類型是 訪問(明確 接口實現)。關鍵 當您將 陣列轉換爲其中一個接口時,要注意的事項是 ,即添加,插入或刪除元素的成員 NotSupportedException。

1

框架類型Array實現IEnumerable ...因此,.NET(任何類型)中的任何數組都實現IEnumerable。

1

foreach不需要從類型來實現IEnumerable接口,它只需要GetEnumerator()方法。

+0

類需要實現所有IEnumerable的方法,而不是僅僅的GetEnumerator() – 2010-06-16 12:53:45

+2

@Steve:'IEnumerable'只有一個方法,'GetEnumerator'! – LukeH 2010-06-16 13:10:31

+0

這就是我在早上回答問題的第一件事。我在這個問題的答案中填寫了MSDN信息,這表明IEnumerator接口上需要其他方法。 – 2010-06-16 13:49:34

3

以下是MSDN

在C#中,這是完全沒有必要的 集合類從 IEnumerable和IEnumerator的爲了 是用foreach兼容繼承。只要 作爲類具有所需的 GetEnumerator,MoveNext,Reset和Current成員,它將與 foreach一起使用。 省略界面有 的優點是可以讓你定義 的返回類型爲 比Object更具體,其中 提供類型安全。

+3

爲了類型安全,你可以(也應該)實現IEnumerable SWeko 2010-06-16 13:18:47

+0

我還沒有找到一個我不能在自己的代碼中使用IEnumerable 的情況,我只是回答瞭如何使用foreach而不使用IEnumerable接口。 – 2010-06-16 13:47:14

相關問題