Comment fonctionne la logique de la méthode compareTo dans la liste fonction de tri?
-
30-09-2019 - |
Question
Comment la logique de la méthode CompareTo fonctionne en liste fonction de tri.
public class person : IComparable
{
string firstName;
string lastName;
public int CompareTo(object obj)
{
person otherPerson = (person)obj;
if (this.lastName != otherPerson.lastName)
return this.lastName.CompareTo(otherPerson.lastName);
else
return this.firstName.CompareTo(otherPerson.firstName);
}
public person(string _firstName, string _lastName)
{
firstName = _firstName;
lastName = _lastName;
}
override public string ToString()
{
return firstName + " " + lastName;
}
}
List<person> l = new List<person>();
l.Add(new person("Mark", "Hanson"));
l.Add(new person("Kim", "Akers"));
l.Add(new person("Zsolt", "Ambrus"));
l.Sort();
foreach (person p in l)
Console.WriteLine(p.ToString());
La solution
Lorsque vous appelez méthode Trier sur une liste générique ( liste dans votre cas), dans les coulisses, la mise en œuvre de Sort vérifiera si le type de la liste (la classe person
) met en œuvre le l'interface IComparable, et si elle le fait invoquera le
Autres conseils
Il trie par nom, puis prénom.
Si deux personnes ont le même nom, la déclaration de if
finira comparer par son prénom.
Dans le cas contraire, il comparera par nom.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow