您的位置:首页 > Web前端

Effective C# Item26:使用IComarable和IComparer接口实现排序关系

2010-01-19 23:24 761 查看
.NET框架定义了两个接口来描述类型的排序关系:IComparable和IComparer,其中IComparable接口定义了类型的自然排序方式,IComparer则为类型提供了另外的排序方式。

我们来看下面的代码。

代码

public class AgeComparer : IComparer<Employee>
{
public int Compare(Employee x, Employee y)
{
return x.Age.CompareTo(y.Age);
}
}

//Test Method
private static void Test()
{
List<Employee> listEmp = new List<Employee>();
listEmp.Add(new Employee("Wing", 24));
listEmp.Add(new Employee("UnKnown", 25));
listEmp.Sort();
Console.WriteLine("ouput info with default sort:");
foreach (Employee emp in listEmp)
{
Console.WriteLine(emp.Name);
}

Console.WriteLine("output info with specific sort:");
AgeComparer comparer = new AgeComparer();
listEmp.Sort(comparer);
foreach (Employee emp in listEmp)
{
Console.WriteLine(emp.Name);
}
}


上面的代码中,首先定义了一个实现了IComparer接口的类型,该类型的Compare()方法中,以Employee的Age作为比较的依据。然后定义了一个测试方法,定义了一个元素类型是Employee类型的List,然后以两种方式对List进行排序,并输出排序后的结果。

上面Test()方法的执行结果如下所示。



综上,IComparable接口和IComparer接口为类型实现排序关系提供了两种标准的机制,IComparable接口应该用于为类型实现最自然的排序关系,而ICpmparer接口则用于定制排序的方式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: