我目前正在寻找自己的收藏,就像一个普通的清单一样,只是它只能容纳10件物品。如果在列表中已经有10个项目时添加了一个项目,则在添加新项目之前将删除第一个项目。
我想做的是创建一个extends类,System.Collections.Generic.List<T>然后修改该Add(T item)方法以包括必要时删除第一项的功能。
System.Collections.Generic.List<T>
Add(T item)
首先,您不能覆盖Add,并且对List仍然具有多态性,这意味着,如果您使用new关键字,并且您的类被强制转换为List,则不会调用新的Add方法。
其次,我建议您研究Queue类,因为您试图做的更多的是队列而不是列表。该类已针对您要执行的操作进行了优化,但没有任何大小限制器。
如果您确实希望某些东西像列表一样工作,但要像一个最大大小的队列一样工作,建议您实现IList并保留一个队列实例来存储元素。
例如:
public class LimitedQueue<T> : IList<T> { public int MaxSize {get; set;} private Queue<T> Items = new Queue<T>(); public void Add(T item) { Items.Enqueue(item); if(Items.Count == MaxSize) { Items.Dequeue(); } } // I'll let you do the rest }