Почему Int16.CompareTo возвращает отличный результат от Int32.CompareTo

У меня есть два модульных теста, и оба действительны. Итак, почему Int16.CompateTo возвращает разницу между двумя числами, а Int32 а также Int64CompareTo метод возвращает строго -1, 0, 1?

[TestMethod]
public void Int16CompareTo()
{
    Int16 value1 = 60;
    Int16 value2 = 5;
    var result = value1.CompareTo(value2);
    Assert.AreEqual(result, 55);
}

[TestMethod]
public void Int32CompareTo()
{
    Int32 value1 = 60;
    Int32 value2 = 5;
    var result = value1.CompareTo(value2);
    Assert.AreEqual(result, 1);
}

1 ответ

Документация MSN отражает поведение, которое вы получаете. Все методы гарантируют, что вы получите значение больше 0, если число больше. 0, если число равно и меньше 0, если число меньше.

Если вы хотите, я бы переопределил метод или создал новый для тестовых случаев.

32-битная https://msdn.microsoft.com/en-us/library/y2ky8xsk(v=vs.110).aspx

16 бит https://msdn.microsoft.com/en-us/library/06x7xh8y(v=vs.110).aspx

Другие вопросы по тегам