020IComparable接口

IComparable接口在.NET中用于让对象实现自定义排序逻辑。通过实现这个接口的CompareTo方法,对象可以参与Array.Sort的排序过程。CompareTo方法接受一个Object参数,并根据返回值确定对象间的相对顺序。返回值的正负零分别表示当前对象小于、等于或大于比较对象。
摘要由CSDN通过智能技术生成

IComparable 接口

https://docs.microsoft.com/zh-cn/dotnet/api/system.icomparable?view=netcore-3.1

定义由值类型或类实现的特定于类型的通用比较方法,旨在对其实例进行排序。

    在System.Array类中有一个共享的Sort方法,该方法可以对简单数据类型的数组进行排序。但是,Sort方法不能直接对更加复杂的对象进行排序,因为该方法不知道复杂对象之间如何进行比较。
    实现IComparable接口可以使对象能够通过Array.Sort方法进行排序。IComparable接口仅包含一个方法CompareTo(),该方法的语法形式如下:

Function CompareTo ( obj As Object ) As Integer

    其中,参数obj的类型为System.Objcct,表示与当前实例对象进行比较的对象。返回值为一个32位的有符号整数,指示要比较的对象的相对顺序,返回值的含义如下:

  • 如果返回值小于零,表示当前对象小于被比较的对象obj。
  • 如果返回值等于零,表示当前对象与被比较的对象obj相等。
  • 如果返回值大于零,表示当前对象大于被比较的对象obj。
Module Module1
    Public Class Customer
        Implements IComparable
        Private strName As String
        Public Sub New(ByVal name As String)
            Me.strName = name
        End Sub
        Public Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo
            If TypeOf obj Is Customer Then
                Dim cus As Customer = CType(obj, Customer)
                Return Me.strName.CompareTo(cus.strName)
            Else
                Throw New ArgumentException("对象不是Customer类型")
            End If
        End Function

        Public Property Name As String
            Get
                Return strName
            End Get
            Set(ByVal value As String)
                strName = Name
            End Set
        End Property
    End Class
    Sub Main()
        Dim Customers() As Customer = {New Customer("李雷"), New Customer("韩梅梅"), New Customer("王芳")}
        Array.Sort(Customers)

        Dim obj As Customer
        For Each obj In Customers
            Console.Write(obj.Name & ",")
        Next
        Console.WriteLine()
        Console.WriteLine("-----------------------------")

        For i = 0 To Customers.Length - 1
            Console.Write(Customers(i).Name & ",")
        Next
        Console.Read()
    End Sub

End Module


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ngbshzhn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值