什麼的foreach如果使用一個集合或列表同時實現了IEnumerable <牛逼>和IEnumerator的<牛逼>?的foreach是否喜歡的IEnumerable <T>或IEnumerator的<T>
2
A
回答
3
根本不能在IEnumerator<T>
上使用foreach
。
只能foreach
在具有GetEnumerator
方法(它是否實現IEnumerable
。
因此,要回答你的問題,它使用從IEnumerable<T>
的GetEnumerator
方法的對象。
很簡單證明。試圖編譯這個:
IEnumerator<char> str = "asdf".GetEnumerator();
foreach (char c in str) { }
5
IEnumerable<T>
有一個方法GetEnumerator
- 這將是一個IEnumerator<T>
,這是用於迭代(使用MoveNext
方法)。
+2
@Downvoter - 關心評論? – Oded
1
另請注意,這不是集合實現IEnumerable/IEnum的要求erator以便在foreach循環中使用。的foreach使用基於模型的方法,因爲這裏所描述Eric Lippert blog
1
另一個(更多相關的)問題是:如果什麼類型實現IEnumerable<>
明確,並在同一時間有一個普通的公共方法GetEnumerator()
,適合?答案:然後使用公共方法。
如果什麼類型實現了都IEnumerable<Foo>
和IEnumerable<Bar>
?然後,如果沒有常規實例方法GetEnumerator()
(如果兩個接口都顯式實現,則可能發生這種情況),則會出現編譯時錯誤。
相關問題
- 1. IEnumerable和IEnumerator的或foreach C#
- 2. 部隊更新TGT
- 3. IEnumerable的<XElement>和foreach
- 4. 無法從AD獲得TGT
- 5. IEnumerator的VS的IEnumerator <T>
- 6. 什麼演員IEnumerable <T> IEnumerator <T>做
- 7. 如何調用通用方法IEnumerator <> IEnumerable <>。GetEnumerator()?
- 8. 不能設置爲空的特性「TGT」
- 9. 的IEnumerable <T>和IEnumerator的 - 一些說明,請
- 10. foreach是否爲內置類型使用IEnumerator/IEnumerable?
- 11. IEnumerator的<T>實施
- 12. 是Yield Return == IEnumerable&IEnumerator?
- 13. 的EntitySet <IEnumerable的<T>>到IEnumerable的<T>
- 14. IEnumerable的<T>到的IDictionary <U,IEnumerable的<T>>
- 15. IEnumerable&IEnumerator
- 16. Mapper.Map <任務<IEnumerable的<Address>>,任務<IEnumerable的<AddressView>>()
- 17. IEnumerable的<IEnumerable的<T>>到的IEnumerable <T>使用LINQ
- 18. C#:IEnumerator的<T>在using語句
- 19. IEnumerable,IEnumerator與foreach,何時使用什麼
- 20. Mysql喜歡或喜歡的地方
- 21. Dapper的IEnumerable <T>是否延期或立即執行?
- 22. 將IEnumerable <T>與IEnumerable比較IEnumerable <IEnumerable <T>>
- 23. 導出的IEnumerable <x>或IEnumerable的<y>在同樣的方法
- 24. 選擇自IEnumerable <T>到IEnumerable的<Quantity<T>>
- 25. 由TGT創建iSCSI目標不能
- 26. GSSManager.createCredential如何獲取Kerberos密鑰和TGT?
- 27. 的IEnumerator IEnumerable的VB到C#
- 28. 使用服務負責人獲得TGT
- 29. 動態生成的類實現IEnumerator <T> GetEnumerator()和IEnumerator IEnumerable.GetEnumerator()
- 30. 喜歡網站的人是否需要再次喜歡
哦,我沒有注意到。以爲foreach接受或者直接喜歡迭代器接口。 Thx爲您的答案。 – Beachwalker
......由於下面描述的基於模式的「鴨子打字」和Eric的博客,錯過了這一點。 – Beachwalker