ITEM 20 :: EFFECTIVE C#
안녕하세요, 20번째 시간입니다. 음… 사실 별 할 말이 없네요. 어렵다는 말 밖에…
이번 챕터는 Icomparable
설명
.NET Framework는 객체의 선후 관계를 정의하기 위해서 Icomparable
Icomparable
Icomparer
이를 사용하면 좋은 점은, 객체의 선후 관계를 정의할 수 있다는 것이고, 객체의 선후 관계를 정의하면서 타입 내의 관계 연산자를 재정의하면 해당 타입에 최적화된 방식 으로 객체의 선후관계를 판단할 수 있으므로 기본 관계연산자의 구현기능을 이용할 때 발생할 수 있는 비효율의 문제 또한 개선할 수 있다.
이는 연산자 오버로딩에 관한 이야기이다. 관계 연산자를 사용하면 객체간의 선후관계 비교가 편해지는데, 이는 오버로딩을 해야하고,하게되면, 기본 관계 연산자로도 쉽게 객체간의 선후관계를 판단할 수 있게 사용할 수 있다는 이야기이다.
다시 돌아와서, Icomparable 인터페이스부터 부연 설명을 하자면,
Icomparable
또한 이 기능에서 추가적인 선후관계를 정의할 때에만 Icomparer 사용하면 좋다고 한다.
고래서 결론은?
Icomparable과 IComparer는 타입에 선후관계를 제공하기 위한 표준 메커니즘이다. 기본적인 선후 관계는 IComparable을 통해 구현해야한다. Icomparable 구현할 때에는 관계 연산자도 함께 오버로딩하여 일관된 결과를 제공해야한다. Icomparable.CompareTo()는 System.Object타입의 매개변수를 취하므로 별도로 오버로딩된메서드를 제공해야 한다. 별도로 IComparer를 이용하면 추가적인 선후 관계를 정의할 수 있을 뿐 아니라 우리가 직접 개발하지 않는 타입에 대해서도 임의의 선후관계를 추가로 정의할 수 있다.