내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

IComparable.CompareTo 메서드

2013-12-13

현재 인스턴스와 동일한 형식의 다른 개체를 비교하고 정렬 순서에서 현재 인스턴스의 위치가 다른 개체보다 앞인지, 뒤인지 또는 동일한지를 나타내는 정수를 반환합니다.

Namespace:  System
어셈블리:  mscorlib(mscorlib.dll)

‘선언
Function CompareTo ( _
	obj As Object _
) As Integer

매개 변수

obj
형식: System.Object
이 인스턴스와 비교할 개체입니다.

반환 값

형식: System.Int32
비교되는 개체의 상대 순서를 나타내는 부호 있는 32비트 정수입니다. 반환 값에는 다음과 같은 의미가 있습니다.

의미

0보다 작음

이 인스턴스는 정렬 순서에서 obj보다 우선합니다.

0

이 인스턴스가 정렬 순서에서 obj와 동일한 위치에서 발생합니다.

0보다 큼

이 인스턴스는 정렬 순서에서 obj 다음입니다.

예외조건
ArgumentException

obj가 이 인스턴스와 같은 형식이 아닌 경우

CompareTo는 값의 순서를 지정하거나 값을 정렬할 수 있는 형식에서 구현합니다. 제네릭이 아닌 컬렉션 개체의 Sort와 같은 메서드는 이 메서드를 자동으로 호출하여 배열의 각 멤버 순서를 지정합니다. 사용자 지정 클래스나 구조체에서 IComparable을 구현하지 않으면 해당 멤버의 순서를 지정할 수 없으며 정렬 작업에서 InvalidOperationException이 발생할 수 있습니다.

이 메서드는 정의일 뿐이며 특정 클래스 또는 값 형식에 의해 구현되어야만 효과가 있습니다. 반환 값 구역에 지정된 비교의 의미(현재 개체의 위치가 다른 개체보다 "앞인지", "뒤인지" 또는 "동일한지")는 특정 구현에 따라 다릅니다.

정의에 따르면 모든 개체는 Nothing보다 큰 것(또는 다음)으로 간주하고 두 개의 null 참조는 서로 같은 것으로 간주됩니다.

매개 변수 obj는 이 인터페이스를 구현하는 클래스 또는 값 형식과 같은 형식이어야 합니다. 그렇지 않으면 ArgumentException이 발생합니다.

구현자 참고 사항

개체 A, B 및 C에 대해 다음 조건이 충족되어야 합니다.

A.CompareTo(A)는 0을 반환해야 합니다.

A.CompareTo(B)가 0을 반환하면 B.CompareTo(A)는 0을 반환해야 합니다.

A.CompareTo(B)가 0을 반환하고 B.CompareTo(C)가 0을 반환하면 A.CompareTo(C)는 0을 반환해야 합니다.

A.CompareTo(B)가 0이 아닌 값을 반환하면 B.CompareTo(A)는 반대 부호의 값을 반환해야 합니다.

A.CompareTo(B)가 0이 아닌 값 x를 반환하고 B.CompareTo(C)x와 같은 부호의 값 y를 반환하면 A.CompareTo(C)xy와 같은 부호의 값을 반환해야 합니다.

호출자 참고 사항

CompareTo 메서드를 사용하여 클래스의 인스턴스의 순서를 결정합니다.

다음 코드 예제에서는 CompareTo를 사용하여 IComparable을 구현하는 Temperature 개체를 다른 개체와 비교하는 방법을 보여 줍니다. Temperature 개체는 Int32.CompareTo 메서드에 대한 호출을 래핑하여 CompareTo를 구현합니다.


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 OS

지원되는 버전: 8.0, 7.1, 7.0

Windows Phone

표시:
© 2015 Microsoft