根据这的msdn文档
如果当前实例是引用类型,那么等于(Object)方法将测试引用相等性,而对等于(Object)方法的调用等同于对ReferenceEquals方法的调用。
那么,为什么下面的代码会导致方法调用的两个不同结果:Equals方法返回 true 和ReferenceEquals方法返回false,即使obj和obj1是引用类型,因为IsClass属性返回true。
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
https://stackoverflow.com/questions/33870174
复制相似问题