Is there any way to limit the size of a generic collection?
I have a Stack of WriteableBitmap which I am using to store a clone of a WriteableBitmap on each change, meaning that I can undo easily by simply Popping the most recent WriteableBitmap off the stack.
The problem is the memory usage, I want to limit this stack to hold 10 objects, but I can't see a property allowing me to easily do this. Is there a way, or am I going to have to check the stack size on each change, and copy the last 10 objects into a new stack whenever I hit 10, and on each subsequent change? I know how to do this, but was hoping that there was an easier way, is there?
2147483647 because all functions off List are using int.
Capacity is the number of the elements which the List can store before resizing of List needed. But Count is the number of the elements which are actually present in the List.
Type Parameters T. Specifies the type of elements in the stack. Inheritance. Object. Stack<T>
The capacity property in ArrayList class gets or sets the number of elements that the ArrayList can contain. The default capacity is 4. If 5 elements are there, then its capacity is doubled and would be 8.
You can use LinkedList which represents doubly link list to simulate Circular Stack.
You can you AddFirst()
corresponding to Push()
. If Count is 10, you can use RemoveLast()
.
For Pop()
you can use RemoveFirst()
You have to implement your own wrapper to achieve that. There is no direct option available.
class FixedSizeStack : Stack
{
private int MaxNumber;
public FixedSizeStack(int Limit)
: base()
{
MaxNumber = Limit;
}
public override void Push(object obj)
{
if (this.Count < MaxNumber)
base.Push(obj);
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With