因爲我是C#編程語言的新手,我對C#語法有點困惑。爲什麼a.compareTo(b)等於compareTo(a,b)或a.method(b)= method(a,b)?
可以得到兩個值來比較這兩個值的方法可以寫爲a.compareTo(b)
而不是compareTo(a,b)
這怎麼可能?
假設compareTo
返回int
變量a
被鏈接到int
並得到比較!怎麼樣?
預先感謝您。
因爲我是C#編程語言的新手,我對C#語法有點困惑。爲什麼a.compareTo(b)等於compareTo(a,b)或a.method(b)= method(a,b)?
可以得到兩個值來比較這兩個值的方法可以寫爲a.compareTo(b)
而不是compareTo(a,b)
這怎麼可能?
假設compareTo
返回int
變量a
被鏈接到int
並得到比較!怎麼樣?
預先感謝您。
在C#中,int
關鍵字實際上代表System.Int32
類型的結構。這種類型有幾種可用的方法,其中之一就是你所看到的CompareTo(Int32)
。
CompareTo
用於Int32
對象發生在一個整數值,該值進行比較,以本身並返回結果,非常簡單地是這樣的:
public int CompareTo(int value)
{
if (this < value)
{
return -1;
}
if (this > value)
{
return 1;
}
return 0;
}
的this
關鍵字引用類型,這的當前實例方法屬於,在你的情況下,a
。
Int32
的文檔及其方法可以找到here。
作爲每documentation:
此方法僅僅是一個定義,並且必須由一個特定的類或類型的值被實現爲有效果。 「返回值」部分中指定的比較的含義(「先於」,「與......相同」和「跟隨」出現在同一位置)取決於具體實現。
在這個例子中,他們通過其華氏溫度值,它是一個雙比較溫度:
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");
}
但在自己的類,你可以決定如何它的一個實例比較反對另一個。
tnx爲你的答案,但我堅持不是比較方法。我想知道如何通過這種語法調用像這樣的「int Sum(int a,int b){return a + b)」方法a.sum(b)而不是sum(a,b) – 1AmirJalali
您是否熟悉'this'語法以及在類的實例上運行的方法的上下文?你來自哪種語言,或者C#是你的第一語言? – Kasaku