2017-06-16 6 views
1

Ich habe Klasse Employee und ich muss IComparable implementieren und CompareTo Methode verwenden, um Mitarbeiter nach Name zu sortieren. Von dem, was ich gesehen habe, muss ich 1, -1 und 0 zurückgeben, aber wie benutze ich die Saiten?Implementieren Sie IComparable mit Zeichenfolgen

Hier ist was ich habe.

class Employee : IComparable<Employee> 
{ 
    string name; 
    string address; 

    public int CompareTo(Employee obj) 
    { 
     Employee person = obj; 
    } 
} 
+0

einen Blick auf string.Compare https://msdn.microsoft.com/en-us/library/system.string.compare(v=vs.110).aspx –

+1

Mögliche Duplikat [zum Implementieren IComparable Schnittstelle?] (Https://stackoverflow.com/questions/4188013/how-to-implement-icomparable-interface) –

Antwort

0

Ganz einfach:

 public int CompareTo(Employee obj) 
     { 
      if (name == obj.name) 
      { 
       return address.CompareTo(obj.address); 
      } 
      return name.CompareTo(obj.name); 
     } 
+0

Ich brauche nicht die Adresse verwenden – Xoax

1

Die einfachste Sache zu tun ist, nur um es passieren zu einem bereits umgesetzt Vergleichsverfahren durch. In diesem Fall, da Sie nur zwei Strings vergleichen müssen, könnten Sie einfach String.Compare nennen:

class Employee : IComparable<Employee> 
{ 
    string name; 
    string address; 

    public int CompareTo(Employee obj) 
     => string.Compare(name, obj.name);  
} 

Sie name.CompareTo(obj.name) verwenden könnte, aber dann würden Sie kümmern müssen, ob name null sein könnte. Nach the MSDN article auf String.Compare:

Eine oder beide Komparanden kann null sein. Per Definition wird jede Zeichenfolge, einschließlich der leeren Zeichenfolge (""), größer als eine Nullreferenz verglichen. und zwei Null-Referenzen vergleichen einander gleich.

+0

Ist => bedeuten, zu ändern? – Xoax

+1

Es ist nur eine Kurzform für eine Single-Command-Methode. Der technische Name dafür ist ein "expression-bodied member" –

+1

Es bedeutet dasselbe wie {return ...; } –

Verwandte Themen