Выполните следующие испытания класса и единицы измерения.Почему этот тест на равенство объекта терпит неудачу?
public class Entity
{
public object Id { get; set; }
public override bool Equals(object obj)
{
return this == (Entity)obj;
}
public static bool operator == (Entity base1, Entity base2)
{
if (base1.Id != base2.Id)
{
return false;
}
return true;
}
public static bool operator != (Entity base1, Entity base2)
{
return (!(base1.Id == base2.Id));
}
}
[TestMethod]
public void Test()
{
Entity e1 = new Entity { Id = 1 };
Entity e2 = new Entity { Id = 1 };
Assert.IsTrue(e1 == e2); //Always fails
}
Может кто-то объяснить, почему его не удается?
Я предпочитаю object.Equals (base1.Id, base2.Id), чтобы справиться с нулевыми идентификаторами. –
Хорошее предложение. –
(Он все еще оставляет отверстие, когда base1 или base2 является нулевым, конечно, но это также идет на другие проблемы :) –