为什么Assert.AreEqual <T>失败并且具有相同的对象?

Tor*_*nca 3 c# assert

我有一个包含这个属性的类:

public class Person
{
    public long Id { get; set; }

    public string Name { get; set; }

    public int? IdCountry { get; set; }
    public virtual Country Country { get; set; }
    public int? IdState { get; set; }
    public virtual State State { get; set; }
}

public class Country
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class State
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int IdCountry { get; set; }
    public virtual Country Country { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在单元测试中,我创建了两个具有相同值的对象

Person expected = new Person()
{
    Name = "blablablbla",
    Id = 1
};
Person actual = PessoaFactory.Create(Name: "blablablbla", Id: 1);
Assert.AreEqual<Person>(expected, actual);
Run Code Online (Sandbox Code Playgroud)

但是Assert.AreEqual会引发异常.

Pat*_*irk 6

您需要覆盖Equals以比较对象.默认实现比较引用,而不是值.请参阅MSDN文档.