首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >比较C#中的两个类对象

比较C#中的两个类对象
EN

Stack Overflow用户
提问于 2022-02-21 03:25:42
回答 1查看 547关注 0票数 0

我正在尝试比较我的单元测试中的两个类对象,但是即使字段是相同的,也会得到异常。

代码语言:javascript
运行
复制
[TestMethod]
public async Task getResult()
{
var expectedResult = new List<myClass>(){
    new myClass(){
        Id = 1
        Name = "updatedName"
    }
}
// here I am calling POST method to update the name
// won't include the full code because of brevity

// now getting the result
var actualResult = await this.getResult(1) // getting the result of the above Id

Assert.Equal(expectedResult, actualResult)
}

例外我得到:

代码语言:javascript
运行
复制
myClass
{
    Id = 1
    Name = "updatedName"
} because myClass should match, but found
myClass
{
    Id = 1
    Name = "updatedName"
} 

我很困惑,因为所有的字段都是相同的,那么为什么它们不匹配呢?

EN

Stack Overflow用户

回答已采纳

发布于 2022-02-21 05:00:04

Assert.Equal依赖于对象的.Equals方法(请看这里)。在创建自己的类时,您可以选择重写此方法,并添加您自己的比较两个对象相等的逻辑(例如,逐字段相等检查)。

如果不重写它,则有一个从Object继承的默认Object,它等同于.ReferenceEquals:如果两个对象具有相同的引用,否则返回true。当两个对象具有相同的引用时,唯一的情况是它是同一个对象。

在您的示例中,您可以为类定义.Equals覆盖(例如,看这里),也可以尝试遵循这就是答案中关于如何对两个对象执行深度相等检查的建议。第三个选项是创建一个继承自IEqualityComparer的单独类,它将为您的对象提供完全相等的检查逻辑,而不是类代码库(例如,见本文)的一部分。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71200878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档