2017-11-19 1 views
0

Dies ist meine erste Frage hier, also wenn ich etwas falsch mache, bitte sei so freundlich und sag es einfach. Damit. Ich habe das in einem Lehrbuch gefunden. Es ist die Klasse eines Objekts Array Sort-Programm. Es ist genau das, was ich brauche, aber es ist wirklich schlecht in dem Buch erklärt und ich kann nicht clever daraus werden. Könnte mir jemand das für mich erklären? Das würde mir wirklich helfen.Sortier-Array mit ICompare

class Person : IComparable      
{ 
    private string name; 
    public Person() 
    { 
     name = "EMPTY"; 
    } 
    public Person (string nm) 
    { 
     name = nm; 
    } 

    public string NAME 
    { 
     get 
     { 
      return name; 
     } 
    } 
    public int CompareTo(object oneObject) 
    { 
     Person comparePerson = (Person)oneObject;    
     return (name.CompareTo(comparePerson.name));  
    } 
    public override string ToString() 
    { 
     return "Name of the Person: " + name; 
    }} 
+1

Ich postete hier, bevor ich nach einem Codeabschnitt fragte, der mir erklärt werden sollte. Die Frage wurde nicht gut aufgenommen. Ich habe für diese Art von Frage gefunden; ASP Foren ist ein guter Ort um sich zu drehen. https://forums.asp.net/ :-) – davvv

+0

Vielen Dank für Ihre Freundlichkeit :) – Sven

+0

Stackoverflow ist nicht der richtige Ort für Fragen wie diese. Hier konzentrieren wir uns darauf, Lösungen für bestimmte Probleme zu finden, und nicht, um Code-Teile zu erklären. –

Antwort

0

Dieser Code ist ein Beispiel für die Implementierung der Schnittstelle IComparable. Sie können es in Fällen verwenden, in denen Sie die Methode Sort() für Array verwenden möchten, wobei Instanzen keine Werte (Klassen, Strukturen) sind. Dieser Teil des Codes beschreibt Art Prinzip für Computer, wie es Array von Person Instanzen sortieren soll:

1. public int CompareTo(object oneObject) 
2.  { 
3.   Person comparePerson = (Person)oneObject;    
4.   return (name.CompareTo(comparePerson.name));  
5.  } 

In Zeile 3 Guss Argument (mit aktueller Instanz verglichen wird) zu Person-Klasse. Es ist unsicher, weil Sie InvalidCastException erhalten können, wenn oneObject nicht Personenklasse ist.

In Zeile 4 Name der aktuellen instanse mit Namen oneObject Argument Vergleich Properti Name ist String. String hat die Implementierung der IComparable Schnittstelle, und Sie verwenden es.

Wenn Sie die Sort() -Methode für Array aufrufen, vergleicht sie Elemente (unter Verwendung von CopareTo(arg)) eins zu eins und ordnet sie basierend auf den Ergebnissen an.