【发布时间】:2012-03-28 06:24:09
【问题描述】:
我在这里有一个愚蠢的问题。 我定义了一个包含许多数据成员的类,如下所示:
public class A
{
public string Name { get; set; }
public double Score { get; set; }
//...many members
public C Direction { get; set; }
public List<B> NameValue1 { get; set; }
public List<string> NameValue2 { get; set; }
//...many members
}
现在,我正在编写单元测试代码并想比较 A 类的两个实例。 但我发现这不起作用:
Assert.AreEquals(a1, a2);
我必须重写Equals 方法才能做到这一点?默认情况下,C# 对此无能为力吗?
或者我可以序列化这两个家伙并比较文件流?
谢谢。
【问题讨论】:
-
这取决于你想要什么样的比较。默认的 Equals 仅比较两个实例而不是其内容。覆盖并比较每个项目。
-
@zenwalker 你最好发表你的评论作为答案
-
@Arseny 我猜这并不是 OP 正在寻找的答案。另外也不喜欢被否决:D
-
您可以使用反射来比较值类型属性,但对于引用类型属性,这不起作用。 stackoverflow.com/questions/506096/… 也可能重复
标签: c# serialization compare equals