이 질문에는 본질적으로 동일한 코드의 두 가지 구현이 포함됩니다.오브젝트 비교를위한 다른 구현의 장점/단점
첫째, 개체의 컬렉션 정렬 할 때 매개 변수로 사용할 수있는 비교 방법을 만들 대리자를 사용 : 나는의 컬렉션을 정렬하는 방법을하고자 할 때
class Foo
{
public static Comparison<Foo> BarComparison = delegate(Foo foo1, Foo foo2)
{
return foo1.Bar.CompareTo(foo2.Bar);
};
}
내가 위의 사용을 Foo 객체는 CompareTo 함수와 다른 방식으로 제공됩니다.
List<Foo> fooList = new List<Foo>();
fooList.Sort(BarComparison);
둘째, IComparer를 사용하여 : : 예를 들어 내가 푸 개체의 컬렉션에 푸 개체에 대한 이진 검색을 수행 할 때
public class BarComparer : IComparer<Foo>
{
public int Compare(Foo foo1, Foo foo2)
{
return foo1.Bar.CompareTo(foo2.Bar);
}
}
나는 위를 사용합니다. 예를 들어 :
BarComparer comparer = new BarComparer();
List<Foo> fooList = new List<Foo>();
Foo foo = new Foo();
int index = fooList.BinarySearch(foo, comparer);
내 질문
은 이러한 구현의 각각의 장점과 단점은 무엇- 입니까?
- 이러한 구현을 활용하는 방법에는 어떤 것이 있습니까?
- 코드를 복제 할 필요가없는 방식으로 이러한 구현을 결합하는 방법이 있습니까?
- 이 구현 중 단 하나만 사용하여 이진 검색과 대체 수집 정렬을 모두 수행 할 수 있습니까?
훌륭한 코드 예제! –