Angenommen, ich habe eine rollende Sammlung von Werten, in der ich die Größe der Sammlung festlege, und jedes Mal, wenn ein neuer Wert hinzugefügt wird, werden alle alten Werte über diese angegebene Größe hinaus abgelegt. Offensichtlich (und ich habe diese getestet), um die beste Art der Sammlung für dieses Verhalten zu verwenden, ist eine Queue:Wie erhalten Sie die ersten und letzten Einträge in einer Warteschlange?
myQueue.Enqueue(newValue)
If myQueue.Count > specifiedSize Then myQueue.Dequeue()
Was aber, wenn ich den Unterschied zwischen den ersten und letzten Elementen in der Warteschlange berechnet werden soll? Offensichtlich kann ich nicht auf die Artikel nach Index zugreifen. Aber das Umschalten von einer Warteschlange zu etwas, das IList implementiert, erscheint wie ein Overkill, genauso wie das Schreiben einer neuen Queue-ähnlichen Klasse. Gerade jetzt ich habe:
Dim firstValue As Integer = myQueue.Peek()
Dim lastValue As Integer = myQueue.ToArray()(myQueue.Count - 1)
Dim diff As Integer = lastValue - firstValue
Das zu ToArray()
nennen stört mich, aber eine bessere Alternative kommt nicht zu mir. Irgendwelche Vorschläge?
Hat C# keinen Dequeue-Typ? –
Nein, C# hat keinen Typ, .Net hat was Typen; und .Net hat keinen Dequeue-Typ, es hat einen Queue/Queue Typ, der eine Dequeue-Methode hat. –