ListViews 使用什么类型的集合来存储它们的数据?

What type of collection do ListViews use to store their data?

我只需要知道列表视图使用哪种集合来存储其数据。我在文档中看到它是一种特殊的集合 (ListViewItemCollection),但是,这是另一种集合的分支还是完全是 ListViews 独有的?

class ListViewItemCollection 定义为 ListView 的内部 class。

签名看起来像这样:

public class ListViewItemCollection : IList, ICollection, IEnumerable
{
    ...
}

它在内部使用 ListView.ListViewItemCollection.IInnerList 来保存实际元素,并由 ListViewNativeItemCollection 实现。

签名如下:

internal class ListViewNativeItemCollection : ListViewItemCollection.IInnerList
{
    ...
}

IInnerList 看起来像这样:

internal interface IInnerList
{
    int Count { get; }
    bool OwnerIsVirtualListView { get; }
    bool OwnerIsDesignMode{ get; }
    ListViewItem this[int index] { get; set; }
    ListViewItem Add(ListViewItem item);
    void AddRange(ListViewItem[] items);
    void Clear();
    bool Contains(ListViewItem item);
    void CopyTo(Array dest, int index);
    IEnumerator GetEnumerator();
    int IndexOf(ListViewItem item);
    ListViewItem Insert(int index, ListViewItem item);
    void Remove(ListViewItem item);
    void RemoveAt(int index);
}

看起来这是泛型之前的所有日子。