爲什麼ICollection<T>
實現了IEnumerable<T>
和IEnumerable
?爲什麼ICollection <T>實現IEnumerable <T>和IEnumerable
這是什麼目的? IEnumerable
如何受益ICollection<T>
?
爲什麼ICollection<T>
實現了IEnumerable<T>
和IEnumerable
?爲什麼ICollection <T>實現IEnumerable <T>和IEnumerable
這是什麼目的? IEnumerable
如何受益ICollection<T>
?
非通用接口用於向後兼容。如果您使用泛型編寫代碼並想將集合傳遞給以.NET 1.0編寫的某個模塊(它沒有泛型),那麼您仍然希望這樣做能夠成功,並且您希望舊方法能夠遍歷它。
IEnumerable<T>
繼承IEnumerable
所以它也適用於ICollection<T>
。它只是明確地陳述將繼續存在的遺傳。
IEnumerable<T>
本身強制任何實現也執行非泛型IEnumerable
。這是安全的,因爲與.NET 4一樣,IEnumerable<out T>
是協變的...您始終可以將T
轉換爲object
作爲非通用形式。
基本上這意味着如果你的代碼使用IEnumerable
類型的參數,你仍然可以用類似List<T>
的方法來調用它。
埃裏克利珀寫了blog post recently爲什麼藏品最終實現多個接口,和布拉德·艾布拉姆斯寫了blog post back in 2005關於特定IEnumerable<T>
/IEnumerable
決定。
有點類似:[why-does-ienumerablet-inherit-from-ienumerable?](http://stackoverflow.com/questions/221691/why-does-ienumerablet-inherit-from-ienumerable?rq=1) – nawfal 2014-06-08 08:59:24