Tag: implicit conversion

为什么具有隐式转换运算符的自定义结构上的Assert.AreEqual失败?

我创建了一个自定义结构来表示金额。 它基本上是decimal的包装器。 它有一个隐式转换运算符,可将其强制转换为decimal 。 在我的unit testing中,我断言Amount等于原始十进制值,但测试失败。 [TestMethod] public void AmountAndDecimal_AreEqual() { Amount amount = 1.5M; Assert.AreEqual(1.5M, amount); } 当我使用int(我没有创建转换运算符)时,测试确实成功。 [TestMethod] public void AmountAndInt_AreEqual() { Amount amount = 1; Assert.AreEqual(1, amount); } 当我hoverAreEqual ,它显示第一个解析为 public static void AreEqual(object expected, object actual); 第二个导致 public static void AreEqual(T expected, T actual); 看起来int值1隐式地转换为Amount ,而小数值1.5M则不是。 我不明白为什么会这样。 我本来希望恰恰相反。 第一个unit testing应该能够将decimal转换为Amount 。 […]