Ich möchte eine Prioritätswarteschlangenklasse implementieren. Wenn ein Element mit einer höheren Priorität hinzugefügt wird, wird es an den Anfang der Warteschlange geschoben und stattdessen an das Ende der Warteschlange angehängt.Frage erben von Liste (von T) Klasse
Einfache paar Zeilen Code
Public Class PriorityQueue(Of T)
Inherits List(Of T)
Private _list As New List(Of T)
Public Sub Enque(ByVal item As T, Optional ByVal pushToFront As Boolean = False)
If pushToFront = True Then
_list.Insert(0, item)
Else
_list.Add(item)
End If
End Sub
Public Function Deque() As T
If _list.Count <> 0 Then
Dim item As T = _list(0)
_list.RemoveAt(0)
Return item
Else
Throw New InvalidOperationException
End If
End Function
End Class
Nun ist die die anrufende Funktion versucht, die Elemente in der Warteschlange so zu finden ....
dim _q as new PriorityQueue(Of integer)
_q.Enque(1)
_q.Enque(2)
msgbox(_q.Count())
.....
Das Programm druckt 0 aus! Wenn Sie eine Count() - Eigenschaft hinzufügen, ist alles in Ordnung. Ich hätte gedacht, dass die geerbte Klasse die Count-Funktion der Basisklasse aufrufen sollte. Beachten Sie, dass die Anzahl in Intellisense angezeigt wird, auch wenn ich keine Implementierung in der abgeleiteten Klasse habe.
Bitte als Code markieren: "dim _q als neue PriorityQueue (Of integer) _q.Enque (1) _q.Enque (2) msgbox (_q.Count())" –