【发布时间】:2010-11-21 10:42:36
【问题描述】:
假设我有一个滚动的值集合,我在其中指定集合的大小,并且任何时候添加新值,超过此指定大小的任何旧值都会被丢弃。显然(并且我已经对此进行了测试)用于此行为的最佳集合类型是队列:
myQueue.Enqueue(newValue)
If myQueue.Count > specifiedSize Then myQueue.Dequeue()
但是,如果我想计算队列中第一项和最后一项之间的差异,该怎么办?显然我无法通过索引访问这些项目。但是从 Queue 切换到实现 IList 的东西似乎有点矫枉过正,编写一个新的类似 Queue 的类也是如此。现在我有:
Dim firstValue As Integer = myQueue.Peek()
Dim lastValue As Integer = myQueue.ToArray()(myQueue.Count - 1)
Dim diff As Integer = lastValue - firstValue
打电话给ToArray() 让我很困扰,但我并没有找到更好的选择。有什么建议吗?
【问题讨论】:
-
C# 没有 Dequeue 类型吗?
-
不,C# 没有任何类型,.Net 是有类型的; .Net 没有 Dequeue 类型,它有一个 Queue/Queue
类型,它有一个 Dequeue 方法。
标签: c# .net vb.net collections queue