JMK*_*JMK 7 c# generic-collections
有没有办法限制泛型集合的大小?
我有一个StackableBitmap堆栈,我用它来存储每个更改的WriteableBitmap克隆,这意味着我可以通过简单地从堆栈弹出最近的WriteableBitmap来轻松撤消.
问题是内存使用情况,我想限制这个堆栈来容纳10个对象,但我看不到允许我轻松执行此操作的属性.有没有办法,或者我将不得不检查每次更改的堆栈大小,并在每次点击10时将最后10个对象复制到新堆栈中,并在每次后续更改时复制?我知道怎么做,但希望有一种更简单的方法,是吗?
Oli*_*ver 21
详细说明Tilak的答案是一些示例代码:
public class LimitedSizeStack<T> : LinkedList<T>
{
private readonly int _maxSize;
public LimitedSizeStack(int maxSize)
{
_maxSize = maxSize;
}
public void Push(T item)
{
this.AddFirst(item);
if(this.Count > _maxSize)
this.RemoveLast();
}
public T Pop()
{
var item = this.First.Value;
this.RemoveFirst();
return item;
}
}
Run Code Online (Sandbox Code Playgroud)
您必须实现自己的包装器才能实现这一目标.没有直接的选择.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用代表双向链表的LinkedList来模拟循环堆栈。
你可以AddFirst()对应到Push(). 如果Count为 10,则可以使用RemoveLast().
为Pop()您可以使用RemoveFirst()
| 归档时间: |
|
| 查看次数: |
15983 次 |
| 最近记录: |