当前位置:  开发笔记 > 后端 > 正文

VB.NET(Of T)比较运算符

如何解决《VB.NET(OfT)比较运算符》经验,为你挑选了1个好方法。

在示例代码中,带有"错误注释"的行给出以下错误 -

对于类型"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方法.



1> Mark Bracket..:

为什么VB不会自动调用相应的T运算符?(即如果T是整数,则调用整数比较函数.)

因为对T没有约束可以确保它具有适当的运算符.您可以要求T为IComparable,并使用它的CompareTo方法.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有