UML软件工程组织

在对象中执行Icomparable接口
作者: ZDNet China
Thursday, October 16 2003 12:18 PM
VB.NET充分地利用了很多新的接口。在很多时候程序中的对象需要与.NET框架中的其他对象发生关联,此时对象需要执行这些接口。其中一个重要的新的接口即为Icomparable。

Icomparable用于比较两个对象。如果你想要将数组中的对象进行分类或者查询的时候,请使用Icomparable接口。

下面的代码显示了执行Icomparable接口的一个类:

Public Class SortClass
    Implements IComparable

    Private cstrValue1 As String
    
    Public Sub New(ByVal Value1 As String)
        cstrValue1 = Value1
    End Sub

    Public Function CompareTo(ByValobj As Object) As Integer Implements System.IComparable.CompareTo
        Dim objCompareTo As SortClass

        If TypeOfobj Is SortClass Then
            objCompareTo = obj
            Select Case objCompareTo.Value1
                Case Me.Value1
                    Return 0
                Case Is < Me.Value1
                    Return 1
                Case Is > Me.Value1
                    Return -1
            End Select
        Else
            Throw New System.ArgumentException( _
                "Object is not the same type.")
        End If
    End Function

    Public Property Value1() As String
        Get
            Return cstrValue1
        End Get
        Set(ByVal Value As String)
            cstrValue1 = Value
        End Set
    End Property
End Class

这一接口包含一个唯一的方法,即CompareTo,其结果可以返回以下三种之一:

  • 如果传递的对象与当前的对象相同,它将返回zero。
  • 如果当前对象少于传递的对象,它将返回一个小于zero的值。
  • 如果当前对象大于传递的对象,它将返回一个大于zero的值。

如果传递的对象的类型不相同,将会出现一个ArgumentException的异常。

下面的代码演示了如何在一个数组中使用类,并对数组进行分类。

Dim objArray(4) As SortClass

objArray(0) = New SortClass("B")
objArray(1) = New SortClass("E")
objArray(2) = New SortClass("A")
objArray(3) = New SortClass("C")
objArray(4) = New SortClass("D")

objArray.Sort(objArray)

Dim objValue As SortClass

For Each objValue In objArray
    Debug.WriteLine(objValue.Value1)
Next

如果你想执行二进制方面的查询,也可以使用Icomparable接口。


 

版权所有:UML软件工程组织