在示例代码中,带有"错误注释"的行给出以下错误 -
对于类型"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
Mark Bracket.. 8
为什么VB不会自动调用相应的T运算符?(即如果T是整数,则调用整数比较函数.)
因为对T没有约束可以确保它具有适当的运算符.您可以要求T为IComparable,并使用它的CompareTo方法.
为什么VB不会自动调用相应的T运算符?(即如果T是整数,则调用整数比较函数.)
因为对T没有约束可以确保它具有适当的运算符.您可以要求T为IComparable,并使用它的CompareTo方法.