IEnumerable<T>实施IEnumerable.
但是ICollection<T>没有实施ICollection.
这个理由是什么和/或只是一个疏忽?
Rom*_*ein 10
尼克说,ICollection几乎没用.
这些接口仅与其名称相似,CopyTo并且Count是唯一的共同属性.Add,Remove,Clear,Contains和IsReadOnly已加入的同时IsSychronized,并SyncRoot已被删除.
从本质上讲,ICollection<T>是可变的,ICollection不是.
Krzysztof Cwalina在这个主题上有更多的内容
ICollection<T>似乎ICollection,但它实际上是一个非常不同的抽象.我们发现这ICollection不是很有用.同时,我们没有表示读/写非索引集合的抽象.ICollection<T>是这样的抽象,你可以说ICollection在通用世界中没有一个完全对应的对等体;IEnumerable<T>是最接近的.
ICollection<T>并且ICollection实际上是非常不同的接口,不幸的是共享一个名称,而不是其他.
来自http://blogs.msdn.com/b/kcwalina/archive/2005/09/23/collections.aspx
ICollection<T>似乎ICollection,但它实际上是一个非常不同的抽象.我们发现这ICollection不是很有用.同时,我们没有表示读/写非索引集合的抽象.ICollection<T>是这样的抽象,你可以说ICollection在通用世界中没有一个完全对应的对等体;IEnumerable<T>是最接近的.
首先,两者都没有IList<T>实现,可能出于同样的原因。 实现:IListIList<T>ICollection<T>, IEnumerable<T>, IEnumerable
ICollection 的某些部分并不是必需的,但在它投入使用后更改界面充其量只是破坏。
看看ICollection:
public interface ICollection : IEnumerable
{
void CopyTo(Array array, int index);
int Count { get; }
bool IsSynchronized { get; }
object SyncRoot { get; }
}
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,这不是您需要的属性,当我想要一个 Collection 时,我从来没有需要过它,也不想实现它。我想这个理由已经过时了,但你必须向 .Net 团队询问肯定的答案。
| 归档时间: |
|
| 查看次数: |
5562 次 |
| 最近记录: |