IComparable.CompareTo 方法

2013/12/13

Namespace:  System

语法

```声明
Function CompareTo ( _
obj As Object _
) As Integer
```

obj

例外

ArgumentException

obj 不具有与此实例相同的类型。

备注

CompareTo 方法由具有可排序值的类型实现。它由非泛型集合对象（如 Sort）的方法自动调用来对数组中的每个成员进行排序。如果自定义类或结构未实现 IComparable，则其成员将无法排序，并且排序操作会引发 InvalidOperationException

A.CompareTo(A) 必须返回零。

示例

```
Imports System.Collections

Public Class Temperature
Implements IComparable
' The temperature value
Protected temperatureF As Double

Public Overloads Function CompareTo(ByVal obj As Object) As Integer _
Implements IComparable.CompareTo

If obj Is Nothing Then Return 1

Dim otherTemperature As Temperature = TryCast(obj, Temperature)
If otherTemperature IsNot Nothing Then
Return Me.temperatureF.CompareTo(otherTemperature.temperatureF)
Else
Throw New ArgumentException("Object is not a Temperature")
End If
End Function

Public Property Fahrenheit() As Double
Get
Return temperatureF
End Get
Set(ByVal Value As Double)
Me.temperatureF = Value
End Set
End Property

Public Property Celsius() As Double
Get
Return (temperatureF - 32) * (5 / 9)
End Get
Set(ByVal Value As Double)
Me.temperatureF = (Value * 9 / 5) + 32
End Set
End Property
End Class

Public Module Example
Public Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)
Dim temperatures(9) As Temperature
' Initialize random number generator.
Dim rnd As New Random()

' Generate 10 temperatures between 0 and 100 randomly.
For ctr As Integer = 1 To 10
Dim degrees As Integer = rnd.Next(0, 100)
Dim temp As New Temperature
temp.Fahrenheit = degrees
temperatures(ctr - 1) = temp
Next

' Sort Array.
Array.Sort(temperatures)

For Each temp As Temperature In temperatures
outputBlock.Text &= temp.Fahrenheit & vbCrLf
Next
End Sub
End Module
' The example displays the following output (individual
' values may vary because they are randomly generated):
'       2
'       7
'       16
'       17
'       31
'       37
'       58
'       66
'       72
'       95

```

Windows Phone