为什么Object.Equals(new Object(),new Object())返回false

时间:2012-05-28 01:54:03

标签: c# boolean equals

为什么以下代码打印错误?

static void Main(string[] args)
{
    Console.WriteLine(Object.Equals(new Object(), new Object()));
    Console.ReadKey();
}

2 个答案:

答案 0 :(得分:7)

来自MSDN

  

Equals的默认实现支持引用相等   引用类型和值类型的按位相等。参考   等于意味着被比较的对象引用引用   同一个对象。按位相等意味着被比较的对象具有   相同的二进制表示。

换句话说,您正在创建两个相同类型的不同对象,并查看它们是否是完全相同的对象,而不是它们。

答案 1 :(得分:5)

根据MSDN Documentation

  

Equals的默认实现支持引用类型的引用相等性和值类型的按位相等性。 引用相等意味着被比较的对象引用引用相同的对象。按位相等意味着被比较的对象具有相同的二进制表示。

请注意,派生类型可能会覆盖Equals方法以实现值相等。值相等意味着比较对象具有相同的值但具有不同的二进制表示。

您正在创建两个不同的对象。