C#CompareTo方法混淆

时间:2017-01-05 18:23:37

标签: c#

我试图理解C#中的CompareTo方法。我明白,如果两个变量都相同,我得到0.但是+1和-1的部分让我感到困惑......有人可以更直观地向我解释一下吗? (是的,我阅读了文档)

3 个答案:

答案 0 :(得分:4)

您说您已阅读documentation,因此很难猜测 会让您感到困惑。

a.CompareTo(b)应该返回

    如果a小于b ,则
  • -1 如果a等于b
  • ,则
  • 0 如果a大于b
  • ,则
  • 1

也许一些例子可以提供帮助:

5.CompareTo(10) // => -1, because 5 < 10
5.CompareTo(5) // => 0, because 5 == 5
5.CompareTo(3) // => 1, because 5 > 3

我说&#34;应该返回&#34;,因为&#34; less&#34;,&#34;等于&#34;的语义。并且&#34;更大&#34;意思取决于具体类型及其CompareTo的实施情况。返回值是一种约定,当您实现自己的CompareTo时,应该应用它们以免混淆您的类型的客户。

答案 1 :(得分:1)

CompareTo是多种不同方法的通用名称,具体取决于所比较的数据类型。因此,取决于上下文,&lt; 0和&gt; 0结果可能意味着稍微不同的事物。通常,&lt; 0表示实例小于比较对象或在列表中位于其之前。 &gt; 0意味着大于比较对象或在列表中跟随它。

答案 2 :(得分:0)

  

将当前实例与同一类型的另一个对象进行比较   返回一个指示当前实例是否的整数   在排序顺序中的前面,后面或出现在相同的位置   另一个对象。

  • -1:实例在排序顺序中位于对象之前。
  • 0:实例出现在同一位置,或被视为匹配。
  • 1:实例按排序顺序跟踪对象。

示例:

A.CompareTo(A); // Must return zero.
A.CompareTo(B) // Returns a value other than zero, then B.CompareTo(A) should return the opposite.
A.CompareTo(B) // If returns a value x not equal to zero, and B.CompareTo(C) returns a value y of the same sign as x, then A.CompareTo(C) must return the value of the same as x and y.

全部来自官方文档here