Powiedzmy, że mam zbiór ciągłych wartości, w których określam rozmiar kolekcji i za każdym razem, gdy dodawana jest nowa wartość, stare wartości przekraczające ten określony rozmiar są pomijane. Oczywiście (i Przetestowałem to) najlepszy rodzaj kolekcji do korzystania z tego zachowania jest kolejka:Jak uzyskać pierwsze i ostatnie elementy w kolejce?
myQueue.Enqueue(newValue)
If myQueue.Count > specifiedSize Then myQueue.Dequeue()
Jednak co, jeśli chcę obliczyć różnicę między pierwszym i ostatnim pozycji w kolejce? Oczywiście nie mogę uzyskać dostępu do elementów według indeksu. Ale przejście z kolejki na coś, co implementacja ILista wydaje się przesadą, podobnie jak pisanie nowej klasy podobnej do kolejki. Teraz mam:
Dim firstValue As Integer = myQueue.Peek()
Dim lastValue As Integer = myQueue.ToArray()(myQueue.Count - 1)
Dim diff As Integer = lastValue - firstValue
To zadzwoń do ToArray()
denerwuje mnie, ale lepsza alternatywa nie przychodzi do mnie. Jakieś sugestie?
Czy nie ma C# typu Dequeue? –
Nie, C# nie ma żadnego typu, .Net jest tym, co ma typy; i .Net nie ma typu Dequeue, ma typ Queue/Queue, który ma metodę Dequeue. –