다음을 통해 공유


컬렉션 내에서 비교 및 정렬

업데이트: 2007년 11월

System.Collections 클래스는 제거할 요소 검색이나 키와 값 쌍의 값 반환 등 컬렉션 관리와 관련된 거의 모든 프로세스에서 비교를 수행합니다.

비교를 위해 두 가지 구문이 사용됩니다. Object에서 상속 또는 파생된 Equals 메서드는 두 개체가 동일한지 여부를 나타내는 부울만 반환합니다. IComparable.CompareTo 메서드 및 IComparer.Compare 메서드는 두 값이 서로 어떻게 다른지 나타내는 정수를 반환합니다. Equals는 동일성 확인을 위해 사용되고 IComparable.CompareToIComparer.Compare 메서드와 제네릭 인터페이스에서 해당하는 메서드인 IComparerCompare() 및 IComparableCompareTo() 메서드는 정렬을 위해 사용됩니다.

비교는 컬렉션의 요소 사이 또는 요소와 지정된 값 사이에 이루어질 수 있습니다. 비교자를 명시적으로 지정하지 않으면 비교되는 개체 중 적어도 하나는 IComparable 인터페이스를 구현하여 다른 개체와 자신을 비교할 수 있어야 합니다.

일부 클래스에는 IComparer 구현을 매개 변수로 사용하는 메서드가 있습니다. 이러한 메서드가 사용되고 IComparer 매개 변수가 null 참조(Visual Basic의 경우 Nothing)가 아닌 경우, 비교되는 개체는 IComparable을 구현할 필요가 없습니다. 하지만, 목록 컬렉션의 값 또는 사전 컬렉션의 키로 사용될 수 있는 모든 클래스에 대해 항상 IComparable을 구현하는 것이 좋습니다.

사전 컬렉션에 대한 일부 생성자 오버로드는 비교해야 할 때마다 키 비교에 사용되는 IComparer 구현을 허용하며 Array에는 Sort 메서드에 대한 특정 호출에만 사용되는 IComparer 구현을 허용하는 Sort 메서드의 오버로드가 있습니다.

시스템의 현재 culture 설정은 컬렉션 내의 비교 및 정렬에 영향을 줍니다. 기본적으로 Collections 클래스의 비교 및 정렬은 culture를 구분합니다. culture 설정을 무시하여 일관성 있는 비교 및 정렬 결과를 얻으려면 CultureInfo가 적용되는 멤버 오버로드가 있는 InvariantCulture를 사용합니다. 자세한 내용은 컬렉션에서 Culture를 구분하지 않는 문자열 작업 수행배열에서 Culture를 구분하지 않는 문자열 작업 수행을 참조하십시오.

참고 항목

참조

IComparer

IComparer<T>

IComparable

IComparable<T>

기타 리소스

컬렉션 만들기 및 조작