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

Col*_*son 1 c# boolean equals

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

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

jb.*_*jb. 7

来自MSDN

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

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


Mar*_*all 5

根据MSDN文档:

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

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

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