具有自动删除项目的 c# 集合

A.R*_*.R. 2 c# collections

可能的重复:
固定大小的队列,它会在新的队列中自动将旧值出列

是否有一个集合会在添加新项目时自动删除旧项目?假设我有一个限制为十个项目的列表。添加第十一项后,删除第一项,容量仍为十。好像会有这样的东西,但是我找不到。有任何想法吗?

Ale*_*Aza 5

实现目标的一种可能方法:

public class FixedSizedQueue<T> : Queue<T>
{
    private readonly int maxQueueSize;
    private readonly object syncRoot = new object();

    public FixedSizedQueue(int maxQueueSize)
    {
        this.maxQueueSize = maxQueueSize;
    }

    public new void Enqueue(T item)
    {
        lock (syncRoot)
        {
            base.Enqueue(item);
            if (Count > maxQueueSize)
                Dequeue(); // Throw away
        }
    }
}
Run Code Online (Sandbox Code Playgroud)