因为我是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