LimitedQueue.cs 708 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. using System.Collections.Generic;
  2. namespace Masuit.Tools.Systems;
  3. /// <summary>
  4. /// 定长队列
  5. /// </summary>
  6. /// <typeparam name="T"></typeparam>
  7. public class LimitedQueue<T> : Queue<T>
  8. {
  9. /// <summary>
  10. /// 队列长度
  11. /// </summary>
  12. public int Limit { get; set; }
  13. /// <summary>
  14. /// 定长队列
  15. /// </summary>
  16. /// <param name="limit"></param>
  17. public LimitedQueue(int limit) : base(limit)
  18. {
  19. Limit = limit;
  20. }
  21. /// <summary>
  22. /// 入队
  23. /// </summary>
  24. /// <param name="item"></param>
  25. public new void Enqueue(T item)
  26. {
  27. if (Count >= Limit)
  28. {
  29. Dequeue();
  30. }
  31. base.Enqueue(item);
  32. }
  33. }