有没有类似于ICollection<t>的接口,但是专为排序集合而设计的?

8

...或者我可以毫无问题地使用ICollection吗?

我的意思是,我认为ICollection并不是为排序集合而设计的,因为这可能会破坏专门为已排序或未排序的ICollection对象设计的应用程序,但我不确定。


2
请查看SortedDictionary的定义:public class SortedDictionary<TKey, TValue> : IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IDictionary, ICollection, IEnumerable {} - L.B
1
SortedSet和SortedList都继承自ICollection,以及其他一些接口。 - Robert Harvey
2个回答

11

我认为 ICollection<T>接口 适用于实现有序集合类型,因为有序集合可以被枚举、添加元素、删除元素、清空并检查其内容。

作为反例,IList<T>接口可能不适用,因为与ICollection<T>不同,它假设集合是一个列表,其中元素可以在特定位置添加,如果集合本身确定每个元素的位置,则这没有意义。

.NET Framework中的有序集合类型(SortedList<TKey, TValue>类SortedDictionary<TKey, TValue>类SortedSet<T>类)都实现ICollection<T>但不是IList<T>。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接