我有一个名为的接口IEmployee.我需要实现IComparer来实现我的接口.
这是我的代码,
interface IEmployee
{
String Name {get;set;}
DateTime DOB {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
我为此创建了一个子类
class Employee
{
String Name {get;set;}
DateTime DOB {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
现在我需要为此实现IComparer,并且在我的Main想要得到copmarer之类的
IComparer<IEmployee> comparerobject= // The comparer from the class.
Run Code Online (Sandbox Code Playgroud)
使用这个comparer我需要employee根据他们的名字对集合进行排序,比如
var employees = new IEmployee[]{new Employee("....."),....}
Array.Sort<IEmployee>(employees , comparer);
Run Code Online (Sandbox Code Playgroud)
你可以改为实现IComparable.然后你的代码看起来像:
interface IEmployee : IComparable
{
String Name { get; set; }
DateTime DOB { get; set; }
}
class Employee : IEmployee
{
public string Name { get; set; }
public DateTime DOB { get; set; }
public int CompareTo(object obj)
{
return this.Name.CompareTo(((IEmployee)obj).Name);
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以按如下方式对数组进行排序:
Array.Sort<IEmployee>(employees);
Run Code Online (Sandbox Code Playgroud)
你可以做
var sorted = employees.OrderBy(e => e.Name).ToArray();
Run Code Online (Sandbox Code Playgroud)
或与比较器
public class EmployeeComparer : IComparer<IEmployee>
{
public int Compare(IEmployee x, IEmployee y)
{
return x.Name.CompareTo(y.Name);
}
}
Run Code Online (Sandbox Code Playgroud)
然后 Array.Sort(employees, new EmployeeComparer());
| 归档时间: |
|
| 查看次数: |
13599 次 |
| 最近记录: |