문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

IComparable.CompareTo 메서드

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

네임스페이스:  System
어셈블리:  mscorlib(mscorlib.dll)

int CompareTo(
	Object obj
)

매개 변수

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

반환 값

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

의미

0보다 작음

이 인스턴스가 정렬 순서에서 obj 앞에 옵니다.

0

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

0보다 큼

이 인스턴스가 정렬 순서에서 obj 뒤에 옵니다.

예외상황
ArgumentException

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

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

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

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

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

구현자 참고 사항

개체 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를 구현합니다.


using System;
using System.Collections;

public class Temperature : IComparable
{
   // The temperature value
   protected double temperatureF;

   public int CompareTo(object obj)
   {
      if (obj == null) return 1;

      Temperature otherTemperature = obj as Temperature;
      if (otherTemperature != null)
         return this.temperatureF.CompareTo(otherTemperature.temperatureF);
      else
         throw new ArgumentException("Object is not a Temperature");
   }

   public double Fahrenheit
   {
      get
      {
         return this.temperatureF;
      }
      set
      {
         this.temperatureF = value;
      }
   }

   public double Celsius
   {
      get
      {
         return (this.temperatureF - 32) * (5.0 / 9);
      }
      set
      {
         this.temperatureF = (value * 9.0 / 5) + 32;
      }
   }
}

public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      Temperature[] temperatures = new Temperature[10];
      // Initialize random number generator.
      Random rnd = new Random();

      // Generate 10 temperatures between 0 and 100 randomly.
      for (int ctr = 1; ctr <= 10; ctr++)
      {
         int degrees = rnd.Next(0, 100);
         Temperature temp = new Temperature();
         temp.Fahrenheit = degrees;
         temperatures[ctr - 1] = temp;
      }

      // Sort ArrayList.
      Array.Sort(temperatures);

      foreach (Temperature temp in temperatures)
         outputBlock.Text += temp.Fahrenheit + "\n";

   }
}
// 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


Silverlight

5, 4, 3에서 지원

Windows Phone용 Silverlight

Windows Phone OS 7.1, Windows Phone OS 7.0에서 지원

XNA Framework

Xbox 360, Windows Phone OS 7.0에서 지원

Silverlight에서 지원되는 운영 체제 및 브라우저에 대한 자세한 내용은 지원되는 운영 체제 및 브라우저을 참조하십시오.

날짜

기록

이유

반환 값 및 설명 부분이 수정되었습니다.

고객 의견

커뮤니티 추가 항목

추가
표시: