2010-03-07 29 views
1

我需要的是一个集合,我可以指定最大元素数。如果我尝试插入元素并且集合已满。集合中的第一个元素被删除,所以它不会溢出。收集,自动删除项目,以避免溢出

在.net中是否有这样的对象,还是我必须自己做?

+1

它被称为循环缓冲区。 – AraK 2010-03-07 11:02:48

+0

以及那不能回答我的问题。 – Tomasi 2010-03-07 11:03:30

+4

这就是为什么它是一个评论:) – AraK 2010-03-07 11:07:19

回答

3

可以为了做到这一点扩展Queue类。

例如:

public class MaxQueue : Queue 
{ 
    private int maxItems; 

    public MaxQueue(int maxItems) 
    { 
     this.maxItems = maxItems; 
    } 

    public override void Enqueue(object obj) 
    { 
     if(Count == maxItems) 
     { 
      Dequeue(); 
     } 

     base.Enqueue(obj); 
    } 
} 

(这个例子是非常幼稚它不是线程安全的,它不检查maxItems至少1.基于队列所以你放心知道你已经将第一个项目加入了它)