Equals方法的默认行为是什么?

Mos*_*ieh 39 c#

设A是一个类,其中一些成员为x,y,z:

Class A {
  int x;
  int y;
  String z;
  ...
}
Run Code Online (Sandbox Code Playgroud)

A是一个Object,因此它继承了Object中定义的"Equals"函数.这个函数的默认行为是什么?它检查成员是否相等还是检查引用相等性?

Gre*_*reg 52

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

http://msdn.microsoft.com/en-us/library/bsc2ak47.aspx

  • @WillYu不是按位相等.它测试字符是否相同.按位相等意味着所有.NET元数据(例如字符串是否被实现)都是相同的.它也不是特殊的(在这方面),它只是重写Equals,并重载(in)相等运算符.它的默认实现仍然是引用相等. (4认同)
  • 对于价值类型而言,事情实际上更为复杂:它不是双向平等比较.有关详细信息,请参阅此问题http://stackoverflow.com/q/8315656/129073 (3认同)

Ush*_*haP 6

除非你重写equals,否则它会检查引用