簡體   English   中英

為什么ICollection <T>實現IEnumerable <T>和IEnumerable

[英]Why does ICollection<T> implement both IEnumerable<T> and IEnumerable

為什么ICollection<T>實現IEnumerable<T>IEnumerable

這樣做的目的是什么? IEnumerable如何使ICollection<T>受益?

IEnumerable<T>本身強制任何實現也實現非通用的IEnumerable 這是安全的,出於同樣的原因, IEnumerable<out T>在.NET 4中是協變的......你總是可以將T轉換為非泛型形式的object

基本上這意味着如果你有使用IEnumerable類型參數的代碼,你仍然可以用類似List<T>調用它。

Eric Lippert 最近寫了一篇關於為什么集合最終會實現許多接口的博客文章 ,而Brad Abrams 在2005年寫了一篇關於特定IEnumerable<T> / IEnumerable決定的博客文章

非通用接口用於向后兼容。 如果您使用泛型編寫代碼並希望將您的集合傳遞給用.NET 1.0編寫的某個模塊(沒有泛型),您仍然希望這成功,並且您希望舊方法能夠遍歷它。

IEnumerable<T>繼承了IEnumerable因此ICollection<T>也是有意義的。 它只是明確說明了那里的繼承。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM