using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;namespace collection_person
{ class NameComparer : IComparer<personmain>
{
public static NameComparer Default = new NameComparer();
public int compare(personmain p1, personmain p2)
{ return System.Collections.Comparer.Default.Compare(p1.Name, p2.Name);
}
}
class personmain:IComparable<personmain>
{
public int CompareTo(personmain p)
{
return this.Age -p.Age;
}
private string _name;
private int _age; public personmain(string Name, int Age)
{
_name = Name;
_age = Age;
} public string Name
{
get{return _name;}
} public int Age
{
get { return _age; }
} static void Main(string[] args)
{
personmain p1 = new personmain("zhangsan", 24);
personmain p2 = new personmain("lisi", 39);
personmain p3 = new personmain("wanger", 17);
List<personmain> persons = new List<personmain>();
persons.Add(p1);
persons.Add(p2);
persons.Add(p3);
Console.WriteLine(persons[1].Name); persons.Sort();
foreach (personmain p in persons)
{
Console.WriteLine(p.Name);
}
persons.Sort(NameComparer.Default);
foreach(personmain p in persons)
{
Console.WriteLine(p.Name);
}
//Console.Read();
}
}
}
错误信息是'collection_person.NameComparer' does not implement interface
member 'System.Collections.Generic.IComparer<collection_person.personmain>.Compare(collection_person.personmain, collection_person.personmain)' 谁能帮忙指出其中的错误呢,最好给个详细的更改,本人菜鸟一枚,先说声谢谢了~
=>
public int Compare(personmain p1, personmain p2)
==>
return System.Collections.Generic.Comparer<string>.Default.Compare(p1.Name, p2.Name);