3
在示例代碼,用「錯誤註釋」行給出了以下的錯誤 -VB.NET(OF T)比較運算符
- 運算符「<」不是類型「T」和定義'T'。
爲什麼VB不會自動調用適當的T運算符? (即,如果T是整數,則稱爲整數比較函數)。
是否有可能以優雅的方式使這項工作成爲可能?
這是針對.NET 2.0的。
編輯 - 任何感興趣的人的更新代碼。
Public Class TreeNode(Of T)
Public Left As TreeNode(Of T)
Public Right As TreeNode(Of T)
Public Value As IComparable(Of T)
Public Sub New(ByVal _value As T)
Value = _value
End Sub
End Class
Public Class Tree(Of T)
Private _Root As TreeNode(Of T)
Public ReadOnly Property Root()
Get
Return _Root
End Get
End Property
Public Sub New()
_Root = Nothing
End Sub
Public Function Add(ByVal value As IComparable(Of T)) As TreeNode(Of T)
If _Root Is Nothing Then
_Root = New TreeNode(Of T)(value)
Else
Dim node As TreeNode(Of T) = _Root
While node IsNot Nothing
If value.CompareTo(node.Value) < 0 Then
If node.Left IsNot Nothing Then
node = node.Left
Else
node.Left = New TreeNode(Of T)(value)
Return node.Left
End If
Else
If node.Right IsNot Nothing Then
node = node.Right
Else
node.Right = New TreeNode(Of T)(value)
Return node.Right
End If
End If
End While
End If
Return _Root
End Function
Public Sub Print(ByVal node As TreeNode(Of T))
If node IsNot Nothing Then
Print(node.Left)
Console.WriteLine(node.Value)
Print(node.Right)
End If
End Sub
End Class
謝謝馬克。我一直在考慮C++和運算符重載。不知道哪種方式更清潔/更優雅。猜猜這是語言設計的問題。 – user50612 2009-01-27 02:47:02