Ich habe eine Customer-Klasse mit iComparable Interface erstellt.iComparable Interface-Funktionen
public class Customer: IComparable<Customer>
{
public int ID {set; get;}
public string Name {set; get;}
public int Salary {set; get;}
public int CompareTo(Customer obj)
{
if (this.Salary > obj.Salary)
return 1;
else if
(this.Salary < obj.Salary)
return -1;
else
return 0;
}
}
Im Hauptprogramm Ich habe eine Liste der Kunden erstellt und hinzugefügt drei Kunden.
List<Customer> ListCust = new List<Customer>();
ListCust.Add(Cust1);
ListCust.Add(Cust2);
ListCust.Add(Cust3);
Ich sortiere dann die Liste.
ListCust.Sort();
Meine Frage ist, wie diese Art Methode der Liste ist die „CompareTo“ Teil der Customer-Klasse Abholung. Anfangs, als ich versucht hatte, es ohne die iComparable-Schnittstelle zu sortieren, gab es mir einen ungültigen Operationsfehler.
Die folgende Frage ist, warum kann ich nicht einfach eine "CompareTo" -Methode in der Kundenklasse ohne iComparable Schnittstelle machen und es funktionieren lassen?
Vielen Dank. Für meine erste Frage, bin ich richtig, wenn ich sage, dass die Sortiermethode in der List-Auflistung nach einer Implementierung der CompareTo-Methode von iComparable sucht? – user3186277
@ user3186277 Letztendlich, ja, obwohl es das nicht direkt tut. Es versucht, einen Standard-Vergleicher durch 'Comparer .Default' zu erhalten, der zuerst' IComparable 'versucht und dann für nicht-generische' IComparable' geht. Wenn beide Versuche fehlschlagen, löst sort eine Ausnahme aus. –
dasblinkenlight