首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尽管变量是引用类型,但为何相等方法和ReferenceEquals方法的结果不同?

尽管变量是引用类型,但为何相等方法和ReferenceEquals方法的结果不同?
EN

Stack Overflow用户
提问于 2015-11-23 11:39:10
回答 2查看 595关注 0票数 6

根据的msdn文档

如果当前实例是引用类型,那么等于(Object)方法将测试引用相等性,而对等于(Object)方法的调用等同于对ReferenceEquals方法的调用。

那么,为什么下面的代码会导致方法调用的两个不同结果:Equals方法返回 true ReferenceEquals方法返回false,即使objobj1是引用类型,因为IsClass属性返回true。

代码语言:javascript
复制
using System;
                    
public class Program
{
    public static void Main()
    {
        var obj = new { a = 1, b = 1 };
        var obj1 = new { a = 1, b = 1 };
        
        Console.WriteLine("obj.IsClass: " + obj.GetType().IsClass);
        
        Console.WriteLine("object.ReferenceEquals(obj, obj1): " + object.ReferenceEquals(obj, obj1));
        
        Console.WriteLine("obj.Equals(obj1): " + obj.Equals(obj1));
    }
}

输出:

obj.IsClass:真 object.ReferenceEquals(obj,obj1):False obj.Equals(obj1):True

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33870174

复制
相关文章

相似问题

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