2011-11-09 18 views
0

私はC#プログラミング言語の新機能ですが、C#の構文について少し混乱しています。a.compareTo(b)がcompareTo(a、b)またはa.method(b)= method(a、b)と等しいのはなぜですか?

これらの2つの値を比較する2つの値を得る方法は、compareTo(a,b)の代わりにa.compareTo(b)と書くことができます。どのようにできますか?

compareTointであるとすると、変数aintにチェーンされ、比較されます。どうやって?

ありがとうございます。

答えて

1

C#では、intキーワードは実際にはタイプSystem.Int32の構造を表します。このタイプにはいくつかの方法がありますが、そのうちの1つは、あなたが見たようにCompareTo(Int32)です。 thisキーワードのそのタイプの現在のインスタンスを指す

public int CompareTo(int value) 
{ 
    if (this < value) 
    { 
     return -1; 
    } 
    if (this > value) 
    { 
     return 1; 
    } 
    return 0; 
} 

Int32オブジェクトの

CompareToは、非常に簡単このような、整数値をとる自身にその値を比較し、結果を返しますメソッドは、あなたのケースではaに属します。

Int32のマニュアルとその方法は、hereです。 documentation 1として

+0

urの答えはtnxですが、私はisntのcomparToメソッドに固執しています。この文法では、sum(a、b)の代わりにthis構文(a、b)を呼び出すことができます。 – 1AmirJalali

+0

'this'構文とクラスのインスタンス上で動作するメソッドのコンテキストに精通していますか?どの言語があなたから来ているのですか、あるいはC#が最初ですか? – Kasaku

0

この方法は、定義され、効果を持つように、特定のクラスまたは値型によって実装されなければなりません。戻り値セクションで指定された比較の意味(「先行する」、「同じ位置で出現する」、および「後に続く」)は、特定の実装に依存します。例では

が、彼らは二重であるその華氏値によって温度を比較します

public int CompareTo(object obj) { 
    if (obj == null) return 1; 

    Temperature otherTemperature = obj as Temperature; 
    if (otherTemperature != null) 
     return this.temperatureF.CompareTo(otherTemperature.temperatureF); 
    else 
     throw new ArgumentException("Object is not a Temperature"); 
} 

しかし、独自のクラスでは、あなたは別のに対してそれの1つのインスタンスを比較する方法を決定することができます。

関連する問題