정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

IComparable<T>.CompareTo 메서드

2013-12-13

현재 개체를 동일한 형식의 다른 개체와 비교합니다.

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

int CompareTo(
	T other
)

매개 변수

other
형식: T
이 개체와 비교할 개체입니다.

반환 값

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

의미

0보다 작음

이 개체는 other 매개 변수보다 작습니다.

0

이 개체는 other와 같습니다.

0보다 큼

이 개체는 other보다 큽니다.

CompareTo에서는 제네릭 컬렉션 개체의 멤버를 정렬하기 위한 강력한 형식의 비교 메서드를 제공합니다. 따라서 이 인터페이스는 일반적으로 개발자 코드에서 직접 호출되지 않습니다. 대신 List<T>.Sort() 메서드에 의해 자동으로 호출됩니다.

이 메서드는 정의일 뿐이며 특정 클래스 또는 값 형식에 의해 구현되어야만 효과가 있습니다. "작음", "같음" 및 "큼"과 같은 비교의 의미는 특정 구현에 따라 달라집니다.

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

구현자 참고 사항

개체 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 메서드를 사용하여 클래스의 인스턴스의 순서를 결정합니다.

다음 예제에서는 Address 개체에 대한 IComparable을 구현하는 방법을 보여 줍니다. 이 예제에서는 제네릭 List<T> 개체를 사용하여 주소 컬렉션을 만듭니다. List<T> 개체는 IComparable<T> 구현을 사용하여 목록 항목을 정렬합니다. 그러면 목록 항목이 정렬된 순서로 표시됩니다.


using System;
using System.Collections.Generic;

public class Address : IComparable<Address>
{
   private string addr1, addr2, cty, st, coun, postal;

   public Address(string address1, string address2, string city, 
                  string state, string postalCode, string country)
   {                  
      this.addr1 = address1;
      this.addr2 = address2;
      this.cty = city;
      this.st = state;
      this.coun = country;
      this.postal = postalCode;      
   }

   public string Address1
   {
      get { return this.addr1; }
      set { this.addr1 = value; }
   }

   public string Address2
   {
      get {return this.addr2; }
      set { this.addr2 = value; }
   }

   public string City
   {
      get { return this.cty; }
      set { this.cty = value; }
   }

   public string State
   {
      get { return this.st; }
      set { this.st = value; }
   }

   public string Country
   {
      get { return this.coun; }
      set { this.coun = value; }
   }

   public string PostalCode
   {
      get {return this.postal; }
      set {this.postal = value; }
   }

   public override string ToString()
   {
      string addressLine2 = string.IsNullOrEmpty(addr2) ? "" : addr2 + "\n";
      return addr1 + "\n" + addressLine2 +              
             cty + ", " + st + " " + postal + " " + coun;
   }

   public int CompareTo(Address other)
   {
      // If other is null, this instance is greater.
      if (other == null) return 1;

      string otherAddress = other.Country + other.State + other.PostalCode +
                                   other.City + other.Address1 + other.Address2;
      return (coun + st + postal + cty + addr1 + addr2).CompareTo(otherAddress);
   }
}

public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      List<Address> addresses = new List<Address>();
      addresses.Add(new Address("106 East 5th St.", "", "New City", "MI", "48002", "USA"));
      addresses.Add(new Address("47 East End Rd.", "", "Huxenplux", "NJ", "20203", "USA"));
      addresses.Add(new Address("12043 N.E. 72nd St.", "", "Belleville", "WA", "98101", "USA"));
      addresses.Sort();
      foreach (Address address in addresses)
         outputBlock.Text += address.ToString() + "\n\n";

   }
}


Windows Phone OS

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

Windows Phone

표시: