c# - 限制通用集合的大小?

标签 c# generic-collections

有什么方法可以限制通用集合的大小吗?

我有一个 WriteableBitmap 堆栈,用于在每次更改时存储 WriteableBitmap 的克隆,这意味着我可以通过简单地从堆栈中弹出最新的 WriteableBitmap 来轻松撤消。

问题是内存使用,我想将这个堆栈限制为容纳 10 个对象,但我看不到允许我轻松执行此操作的属性。有没有办法,或者我是否必须在每次更改时检查堆栈大小,并在每次达到 10 时以及每次后续更改时将最后 10 个对象复制到新堆栈中?我知道该怎么做,但我希望有更简单的方法,是吗?

最佳答案

为了详细说明 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;
    }
  }

关于c# - 限制通用集合的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14101310/

相关文章:

c# - 结构和 IDisposable

c# - 全局设置 String.Compare/CompareInfo.Compare 为 Ordinal

c# - 查找计算机上的总物理内存,.NET core 2.1,c#,Ubuntu

c# - 在 C#/.NET 中处理基督之前日期的(最佳)方法是什么?

java - 使用通用列表作为可变参数

swift - 通用类型集合

c# - 如何获取mac地址

delphi - 如何继承TObjectList<T>而不是继承TObjectList

java - 通用数组上的二分搜索返回前两个索引或 Stackoverflow 异常

java - 包含具有通用 Map.Entry 参数的方法