为什么Int16.CompareTo从Int32.CompareTo返回不同的结果

时间:2017-08-30 19:07:35

标签: c# .net .net-4.6.2

我有两个单元测试,两者都有效。那么,为什么Int16.CompateTo会返回两个数字之间的差异,而Int32Int64 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 个答案:

答案 0 :(得分:0)

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