我最近偶然发现了谷歌完全无法解释的看似奇怪的行为。
using Microsoft.VisualStudio.TestTools.UnitTesting;
class TestClass
{
public override bool Equals(object obj)
{
return true;
}
}
[TestMethod]
public void TestMethod1()
{
TestClass t = new TestClass ();
Assert.AreEqual (t, null); // fails
Assert.IsTrue (t.Equals (null)); // passes
}
我希望这个测试能够成功。但是,在 Visual Studio 2008 / .NET 3.5 中它失败了。它是打算这样还是一个错误?