Assert.AreEqual具有不同的数字类型,但始终具有值long.MaxValue

时间:2016-04-05 12:16:54

标签: c#

我想知道为什么第三个Assert失败而不是第二个:

long l = long.MaxValue;    // is  9223372036854775807
decimal m = long.MaxValue; // is  9223372036854775807
double d = long.MaxValue;  // is 9.2233720368547758E+18

Assert.AreEqual(l, m);
Assert.AreEqual(l, d);
Assert.AreEqual(m, d);

编辑:将鼠标悬停在Visual Studio中失败的第三个断言中显示,调用类型为object的两个值的重载被调用,而第一个调用(十进制,十进制)-overload,第二个调用(double,double) - 超载。因此,这种行为绝对有意义。

0 个答案:

没有答案