namespace ABC
{
class Program
{
static void Main(string[] args)
{
List<Contact> list = new List<Contact>() { new Contact(){FirstName="A",LastName="B"},
new Contact(){FirstName="A",LastName="A"},new Contact(){FirstName="A",LastName="C"},
};
//Compare(Contact x, Contact y)怎么把写好的方法带入下面的红色函数
list = list.Sort(“函数”);
}
}
class Contact
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
class NameCompare : IComparer<Contact>
{
public int Compare(Contact x, Contact y)
{
int result;
if (Contact.ReferenceEquals(x, y))
{
result = 0;
}
else
{
if(x==null)
{
result=1;
}
else if (y == null)
{
result = -1;
}
else
{
result = StringCompare(x.LastName, y.LastName);
if(result==0)
{
result=StringCompare(x.FirstName,y.FirstName);
}
}
}
return result;
}
private static int StringCompare(string x, string y)
{
int result;
if (x == null)
{
if (y == null)
{
result = 0;
}
else
{
result = 1;
}
}
else
{
result = x.CompareTo(y);
}
return result;
}
}
}
list.Sort有三个重载,这个是其中之一,按照你的定义,你可以:
ICompare compare = new NameCompare();
list.Sort(compare);
此外,你的NameCompare的StringCompare偶点多此一举。最简单的,可以使用:Compare 方法 (String, String,此外还有Compare 方法 (String, String, StringComparison)等等。开发中尽量使用系统已有的实现,这样可以规范、减少工作量,还不会有错(自己写的难免有错,调试很费时间),而且性能也相对高点。
new NameCompare()