2017-11-19 27 views
0

これは私の最初の質問です。何か間違ったことをすると、plsは非常に親切で、ちょうどそれを言います。そう。私は教科書でこれを見つけました。オブジェクト配列のソートのクラスです。それは私が必要としているものですが、実際には本の中では説明が不十分です。私はそれを巧みに理解することはできません。だから、誰かがそれを私のために詳細に説明するかもしれない?これは本当に私を助けるだろう。配列を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

ここに投稿して、コードのセクションを私に説明してもらいました。問題はうまく受け入れられませんでした。私は、このような質問のために見つけました。 ASPフォーラムは良い場所です。 https://forums.asp.net/ :-) – davvv

+0

親切に感謝します:) – Sven

+0

Stackoverflowはこのような質問の場所ではありません。ここでは、コード部分を説明するのではなく、特定の問題の解決策を見つけることに焦点を当てます。 –

答えて

0

このコードは、IComparableインターフェイスの実装例です。配列上でSort()メソッドを使用したい場合に使用できます。インスタンスは値(クラス、構造体)ではありません。 Personクラスに(それが現在のインスタンスと比較される)ライン3キャスト引数で

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

: コードのこの部分は、それが人のインスタンスの配列をソートする方法を、コンピュータのソート原理を説明します。 oneObjectが ではない場合、InvalidCastExceptionを取得できるため安全ではありません。Personクラス。

4行目:oneObject引数 Properti Nameという名前の現在のインスタンスのNameを比較しています。文字列はIComparableインターフェイスの実装を持ち、それを使用します。

ArrayでSort()メソッドを呼び出すと、elemnts(CopareTo(arg)を使用)を1対1で比較し、結果に基づいて並べ替えます。