2017-06-16 78 views
1

我有Employee類,我需要實現IComparable並使用CompareTo方法按名稱對員工進行排序。從我所看到的,我必須返回1,-1和0,但是如何使用這些字符串?使用字符串實現IComparable

這是我的。

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

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

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

+1

可能的重複[How to Implement IComparable接口?](https://stackoverflow.com/questions/4188013/how-to-implement-icomparable-interface) –

回答

0

簡單:

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

我不需要使用地址 – Xoax

1

最簡單的事情就是剛剛通過它傳遞給一個已經實現的比較方法。在這種情況下,因爲你只需要比較兩個字符串,你可以只調用String.Compare

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

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

你可以使用name.CompareTo(obj.name)過,但隨後你需要擔心是否name可能爲空。根據the MSDN articleString.Compare

一個或兩個比較項可以爲空。根據定義,任何字符串(包括空字符串(「」))都會比空引用進行比較;和兩個空引用相互比較相等。

+0

是否=>意味着改變? – Xoax

+1

這只是一個單一命令方法的簡寫。它的技術名稱是「表達體成員」 –

+1

它意味着與{return ...; } –