Frage Erben von List(of T) - Klasse

Ich soll zur Implementierung einer priority-queue Klasse. Wenn ein Element Hinzugefügt wird, an eine höhere Priorität, er ist geschoben, um die vor der Schlange, anstatt das hinzufügen, um das Ende der Warteschlange.

Einfach ein 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 die aufrufende Funktion versucht, zu finden die Elemente in der Warteschlange so
....

dim _q as new PriorityQueue(Of integer)
_q.Enque(1)
_q.Enque(2)
msgbox(_q.Count())

.....

das Programm druckt 0! Wenn add Count () - Eigenschaft, dann ist alles in Ordnung.
Ich hätte gedacht, dass der geerbten Klasse aufrufen soll der Basis-Klasse "Count" - Funktion.
Beachten Sie, dass die Zählung zeigt sich in intellisense auch wenn ich keine implementation in der abgeleiteten Klasse.

  • Markieren Sie bitte als code: "dim _q als new PriorityQueue(Of integer) _q.Enque(1) _q.Enque(2) msgbox(_q.Count())"
Schreibe einen Kommentar