为什么a.compareTo(b)等于compareTo(a,b)或a.method(b)= method(a,b)?

时间:2011-11-09 09:11:40

标签: c#

由于我是C#编程语言的新手,我对C#语法感到有些困惑。

一种可以获得两个值来比较这两个值的方法可以写成a.compareTo(b)而不是compareTo(a,b)怎么可能?

假设compareTo返回int变量a被链接到int并进行比较!怎么样?

提前谢谢。

2 个答案:

答案 0 :(得分:1)

在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关键字引用此方法所属的Type的当前实例,在您的情况下为a

可以找到Int32及其方法的文档here

答案 1 :(得分:0)

根据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");
}

但是在你自己的课堂上,你可以决定如何将它的一个实例与另一个实例进行比较。