实现IList接口

我是仿制药的新手。 我想通过从IList接口派生它来实现我自己的集合。

你能给我一些实现IList接口的类的链接,或者为我提供一个至少实现AddRemove方法的代码吗?

除非你有非常令人信服的理由这样做,否则你最好的选择是从System.Collections.ObjectModel.Collectioninheritance,因为它拥有你需要的一切。

请注意,虽然IList的实现者不需要this[int] (索引器)实现为O(1)(基本上是常量时间访问),但强烈建议您这样做。

除了从List派生外,您还可以使用Facin List并向facade类添加更多function。

 class MyCollection : IList { private readonly IList _list = new List(); #region Implementation of IEnumerable public IEnumerator GetEnumerator() { return _list.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } #endregion #region Implementation of ICollection public void Add(T item) { _list.Add(item); } public void Clear() { _list.Clear(); } public bool Contains(T item) { return _list.Contains(item); } public void CopyTo(T[] array, int arrayIndex) { _list.CopyTo(array, arrayIndex); } public bool Remove(T item) { return _list.Remove(item); } public int Count { get { return _list.Count; } } public bool IsReadOnly { get { return _list.IsReadOnly; } } #endregion #region Implementation of IList public int IndexOf(T item) { return _list.IndexOf(item); } public void Insert(int index, T item) { _list.Insert(index, item); } public void RemoveAt(int index) { _list.RemoveAt(index); } public T this[int index] { get { return _list[index]; } set { _list[index] = value; } } #endregion #region Your Added Stuff // Add new features to your collection. #endregion } 

你可以看一下Mono项目 。 有完整的源代码,你可以看看如何实现一些类。 例如“System.Collections.Generics.List ”。

在大多数情况下,您只需使用List或从List派生即可。 如果从List派生,您将自动获得添加和删除的实现。

从Listinheritance通常是最快的方法,但如果你需要inheritance另一个类(例如ContextBoundObject等),可以在以后限制。 实现IList非常快,如上所述,它提供了更多的灵活性。