我想知道为什么第三个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) - 超载。因此,这种行为绝对有意义。