Почему Int16.CompareTo возвращает отличный результат от Int32.CompareTo
У меня есть два модульных теста, и оба действительны. Итак, почему Int16.CompateTo
возвращает разницу между двумя числами, а Int32
а также Int64
CompareTo
метод возвращает строго -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