Je souhaite implémenter une classe de file d'attente prioritaire. Lorsqu'un élément est ajouté à une priorité plus élevée, il est poussé vers l'avant de la file d'attente à la place de la fin de la file d'attente.Question héritant de la classe List (of T)
simples quelques lignes de 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
Maintenant la fonction appelante essaie de trouver les éléments dans la file d'attente ainsi ....
dim _q as new PriorityQueue(Of integer)
_q.Enque(1)
_q.Enque(2)
msgbox(_q.Count())
.....
le programme imprime 0! Si ajouter une propriété Count() alors tout va bien. J'aurais pensé que la classe héritée devrait appeler la fonction Count de la classe de base. Notez que Count apparaît dans intellisense même si je n'ai pas d'implémentation dans la classe dérivée.
Veuillez marquer comme le code: "dim _q comme nouveau PriorityQueue (Of integer) _q.Enque (1) _q.Enque (2) msgbox (_q.Count())" –