Digamos que tengo una colección de valores en la que especifico el tamaño de la colección y cada vez que se agrega un nuevo valor, se dejan los valores anteriores más allá de este tamaño especificado. Obviamente (y he probado esto) el mejor tipo de recogida a utilizar para este comportamiento es una cola:¿Cómo obtendría el primer y el último artículo en una cola?
myQueue.Enqueue(newValue)
If myQueue.Count > specifiedSize Then myQueue.Dequeue()
Sin embargo, lo que si quiero calcular la diferencia entre el primer y último elementos de la cola? Obviamente no puedo acceder a los elementos por índice. Pero cambiar de una cola a algo implementando IList parece exagerado, al igual que escribir una nueva clase similar a una cola. En este momento tengo:
Dim firstValue As Integer = myQueue.Peek()
Dim lastValue As Integer = myQueue.ToArray()(myQueue.Count - 1)
Dim diff As Integer = lastValue - firstValue
esa llamada a ToArray()
me molesta, pero una alternativa superior no viene a mí. ¿Alguna sugerencia?
¿C no tiene un tipo Dequeue? –
No, C# no tiene ningún tipo, .Net es lo que tiene tipos; y .Net no tiene un tipo Dequeue, tiene un tipo Queue/Queue que tiene un método Dequeue. –