为什么以下代码打印错误?
static void Main(string[] args)
{
Console.WriteLine(Object.Equals(new Object(), new Object()));
Console.ReadKey();
}
答案 0 :(得分:7)
来自MSDN
Equals的默认实现支持引用相等 引用类型和值类型的按位相等。参考 等于意味着被比较的对象引用引用 同一个对象。按位相等意味着被比较的对象具有 相同的二进制表示。
换句话说,您正在创建两个相同类型的不同对象,并查看它们是否是完全相同的对象,而不是它们。
答案 1 :(得分:5)
Equals的默认实现支持引用类型的引用相等性和值类型的按位相等性。 引用相等意味着被比较的对象引用引用相同的对象。按位相等意味着被比较的对象具有相同的二进制表示。
请注意,派生类型可能会覆盖Equals方法以实现值相等。值相等意味着比较对象具有相同的值但具有不同的二进制表示。
您正在创建两个不同的对象。