IComparer<T> is implemented by types that are capable of comparing 2 different values, whereas an instance of IComparable<T> is capable of comparing _itself_ with another value.
例如
public class Employee_ClassB : IComparable<Employee_ClassB>
{
public Employee_ClassB() { Name = "hello from Class B"; }
public Employee_ClassB(string Name) { this.Name = Name; }
public string Name { get; set; }
public int CompareTo(Employee_ClassB obj)
{
return Name.CompareTo(obj.Name);
}
}
public class EmployeeComparer : IComparer<Employee_ClassB>
{
public int Compare(Employee_ClassB x, Employee_ClassB y)
{
return x.CompareTo(y);
}
}
...
Employee_ClassB e1 = new Employee_ClassB("1st Instance of ClassB");
Employee_ClassB e2 = new Employee_ClassB("2nd Instance of ClassB");
int e_result = e1.CompareTo(e2);
EmployeeComparer ec = new EmployeeComparer();
int ec_result = ec.Compare(e1, e2);