假设我有一个连续的值的集合,我指定了集合的大小,每当添加新值时,超过指定大小的旧值都会被删除。显然(我已经测试过)最适合这种行为的集合类型是队列(Queue):
myQueue.Enqueue(newValue)
If myQueue.Count > specifiedSize Then myQueue.Dequeue()
然而,如果我想计算队列中第一个和最后一个项目之间的差异怎么办?显然,我不能通过索引访问项目。但是从队列切换到实现IList的东西似乎有些大材小用,编写一个新的类似于队列的类也是如此。现在我的代码是:
Dim firstValue As Integer = myQueue.Peek()
Dim lastValue As Integer = myQueue.ToArray()(myQueue.Count - 1)
Dim diff As Integer = lastValue - firstValue
调用ToArray()
让我感到不安,但我想不出更好的替代方案。有什么建议吗?