【发布时间】:2010-10-22 03:14:31
【问题描述】:
我想实现一个优先队列类。当以更高的优先级添加项目时,它会被推到队列的前面,而不是添加到队列的末尾。
简单的几行代码
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
现在调用函数试图找到队列中的元素 ....
dim _q as new PriorityQueue(Of integer)
_q.Enque(1)
_q.Enque(2)
msgbox(_q.Count())
.....
程序打印出 0!如果添加一个 Count() 属性,那么一切都很好。 我原以为继承的类应该调用基类的 Count 函数。 请注意,即使我在派生类中没有实现,计数也会显示在智能感知中。
【问题讨论】:
-
请标记为代码:“dim _q as new PriorityQueue(Of integer) _q.Enque(1) _q.Enque(2) msgbox(_q.Count())”
标签: .net vb.net inheritance list