LimitedQueue.cs 833 B

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