이 문서는 기계로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오. 추가 정보
번역
원본
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

IComparable<T> 인터페이스

인스턴스를 정렬하는 형식 고유의 비교 메서드를 만들기 위해 값 형식 또는 클래스에서 구현하는 일반화된 비교 메서드를 정의합니다.

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

public interface IComparable<in T>

형식 매개 변수

in T

비교할 개체의 형식입니다.

이 형식 매개 변수는 반공변입니다. 즉, 지정한 형식이나 더 적게 파생되는 모든 형식을 사용할 수 있습니다. 공 분산 및 반공 분산에 대한 자세한 내용은 제네릭의 공 분산과 반공 분산을 참조하십시오.

IComparable<T> 형식에서는 다음과 같은 멤버를 노출합니다.

  이름설명
Public 메서드XNA Framework에서 지원이식 가능한 클래스 라이브러리에서 지원Windows 스토어 앱용 .NET에서 지원CompareTo현재 개체를 동일한 형식의 다른 개체와 비교합니다.
위쪽

이 인터페이스는 값을 갖는, 주로 정렬 정렬할 수 있는 형식에서 구현 됩니다. 예를 들어, 숫자는 두 번째 숫자 보다 클 수 있습니다와 하나의 문자열을 다른 것 보다 먼저 사전순 표시 될 수 있습니다. 값 형식 또는 클래스에서는 CompareTo(T) 메서드를 구현하여 정렬 등의 용도에 적합한 형식 고유의 비교 메서드를 만듭니다.

IComparable<T> 인터페이스는 구현 형식의 인터페이스 정렬 순서를 확인하는 CompareTo(T) 메서드를 정의합니다. IEquatable<T> 인터페이스는 구현 형식의 인터페이스가 같은지 여부를 확인하는 Equals 메서드를 정의합니다.

다음 표와 같이 CompareTo(T) 메서드의 구현은 세 가지 값 중 하나를 가진 Int32를 반환해야 합니다.

의미

0보다 작음

이 개체는 CompareTo 메서드가 지정한 개체보다 작습니다.

Zero

이 개체는 메서드 매개 변수와 같습니다.

0보다 큼

이 개체는 메서드 매개 변수보다 큽니다.

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

구현자 참고 사항

IComparable<T> 인터페이스의 형식 매개 변수를 이 인터페이스를 구현하고 있는 형식으로 바꿉니다.

구현 하는 경우 IComparable<T>, 오버 로드 해야 하면 op_GreaterThan, op_GreaterThanOrEqual, op_LessThan, 및 op_LessThanOrEqual 와 일치 하는 값을 반환 하는 연산자 CompareTo. 또한 구현 해야 또한 IEquatable<T>. 참조는 IEquatable<T> 문서에 대 한 자세한 내용은.

다음 코드 예제에서는 구현을 보여 줍니다. IComparable<T> 는 간단한 Temperature 개체. 이 예제에서는 Temperature 개체 키가 있는 문자열의 SortedList<TKey, TValue> 컬렉션을 만들고 여러 쌍의 온도와 문자열을 순서에 상관없이 목록에 추가합니다. Add 메서드를 호출할 때 SortedList<TKey, TValue> 컬렉션은 IComparable<T> 구현을 사용하여 목록 항목을 정렬합니다. 그러면 목록 항목은 온도를 기준으로 오름차순으로 정렬됩니다.


using System;
using System.Collections.Generic;

public class Temperature : IComparable<Temperature>
{
    // Implement the generic CompareTo method with the Temperature 
    // class as the Type parameter. 
    //
    public int CompareTo(Temperature other)
    {
        // If other is not a valid object reference, this instance is greater.
        if (other == null) return 1;

        // The temperature comparison depends on the comparison of 
        // the underlying Double values. 
        return m_value.CompareTo(other.m_value);
    }

    // The underlying temperature value.
    protected double m_value = 0.0;

    public double Celsius    
    {
        get
        {
            return m_value - 273.15;
        }
    }

    public double Kelvin    
    {
        get
        {
            return m_value;
        }
        set
        {
            if (value < 0.0)
            {
                throw new ArgumentException("Temperature cannot be less than absolute zero.");
            }
            else
            {
                m_value = value;
            }
        }
    }

    public Temperature(double kelvins)
    {
        this.Kelvin = kelvins;
    }
}

public class Example
{
    public static void Main()
    {
        SortedList<Temperature, string> temps = 
            new SortedList<Temperature, string>();

        // Add entries to the sorted list, out of order.
        temps.Add(new Temperature(2017.15), "Boiling point of Lead");
        temps.Add(new Temperature(0), "Absolute zero");
        temps.Add(new Temperature(273.15), "Freezing point of water");
        temps.Add(new Temperature(5100.15), "Boiling point of Carbon");
        temps.Add(new Temperature(373.15), "Boiling point of water");
        temps.Add(new Temperature(600.65), "Melting point of Lead");

        foreach( KeyValuePair<Temperature, string> kvp in temps )
        {
            Console.WriteLine("{0} is {1} degrees Celsius.", kvp.Value, kvp.Key.Celsius);
        }
    }
}
/* This example displays the following output:
      Absolute zero is -273.15 degrees Celsius.
      Freezing point of water is 0 degrees Celsius.
      Boiling point of water is 100 degrees Celsius.
      Melting point of Lead is 327.5 degrees Celsius.
      Boiling point of Lead is 1744 degrees Celsius.
      Boiling point of Carbon is 4827 degrees Celsius.
*/


.NET Framework

4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0에서 지원

.NET Framework Client Profile

4, 3.5 SP1에서 지원

이식 가능한 클래스 라이브러리

이식 가능한 클래스 라이브러리에서 지원

Windows 스토어 앱용 .NET

Windows 8에서 지원

Windows Phone 앱용 .NET

Windows Phone 8, Silverlight 8.1에서 지원

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(서버 코어 역할은 지원되지 않음), Windows Server 2008 R2(서버 코어 역할은 SP1 이상에서 지원, Itanium은 지원되지 않음)

.NET Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

커뮤니티 추가 항목

표시:
© 2015 Microsoft