ObservableCollection是否维护插入顺序?

时间:2013-05-22 14:08:17

标签: c#

我想知道ObservableCollection是否能保证在C#中维护插入其中的元素的顺序。我查看了MSDN网站但找不到答案。

3 个答案:

答案 0 :(得分:10)

ObservableCollection<T>实现IList<T>,这意味着项目按您指定的顺序存储。


作为一般规则,这就是.NET中基本集合类型的工作方式。

IEnumerable<T>允许您以未指定的顺序逐个访问这些项目。

ICollection<T>允许您添加和删除项目,并访问集合的总大小,以及IEnumerable<T>功能。

IList<T>允许您通过索引访问项目,并在ICollection<T>功能之外插入和删除任意索引处的项目。

答案 1 :(得分:5)

它派生自Collection<T>,使用IList<T> items来存储数据。添加和删​​除项ObservableCollection时,只需委托调用基类,例如。

protected override void InsertItem(int index, T item)
{
  this.CheckReentrancy();
  base.InsertItem(index, item);
  this.OnPropertyChanged("Count");
  this.OnPropertyChanged("Item[]");
  this.OnCollectionChanged(NotifyCollectionChangedAction.Add, (object) item, index);
}
C#中的

Collection在有序数据结构中,因此插入和删除后项目的相对顺序不应改变。

答案 2 :(得分:4)

请参阅以下ObservableCollection Class MSDN文档摘录:

<强>方法:

Add         Adds an object to the *end* of the Collection<T>. (Inherited from Collection<T>.)

Insert      Inserts an element into the Collection<T> at the *specified index*. (Inherited from Collection<T>.)

InsertItem  Inserts an item into the collection at the *specified index*. (Overrides Collection<T>.InsertItem(Int32, T).)

显式界面实施:

IList.Add      Adds an item to the IList. (Inherited from Collection<T>.)

IList.Insert   Inserts an item into the IList at the specified index. (Inherited from Collection<T>.)