Jen*_*iya 6 c# reference equals object
根据这个 msdn文档
如果当前实例是引用类型,则Equals(Object)方法测试引用相等性,并且对Equals(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));
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
obj.IsClass:是的
object.ReferenceEquals(obj,obj1):False
obj.Equals(obj1):是的
obj并obj1引用2个不同的对象,因此object.ReferenceEquals()将返回false.
Equals()返回true,因为编译器实现Equals()了匿名类型.如果两个对象的所有属性具有相同的值,它将返回true.
| 归档时间: |
|
| 查看次数: |
327 次 |
| 最近记录: |