ExtensionMethod.NET Home of 840 C#, Visual Basic, F# and Javascript extension methods


Sometimes you may need a Queue<T> that, once it hits a capacity, dequeues items automatically to maintain a certain maximum. While it may be best to derive a new type from Queue<T>, this will get it done much more quickly. This is very useful for maintaining a rolling average or a "history" feature.


public static void EnqueueWithCapacity<T>(this Queue<T> q, T item, int MaxSize)
	if(q.Count >= MaxSize) q.Dequeue();


Queue<int> q = new Queue<int>();
q.EnqueueWithCapacity(0, 3); // {0}
q.EnqueueWithCapacity(1, 3); // {0, 1}
q.EnqueueWithCapacity(2, 3); // {0, 1, 2}
q.EnqueueWithCapacity(3, 3); // {1, 2, 3}

Author: David Harris

Submitted on: 21 aug 2010

Language: C#

Type: System.Collections.Generic.Queue<T>

Views: 3505