C#中 ==和Equals的区别

对比:

  1. == 是运算符,Equals是object中的虚方法,子类可重写;
  2. Equals 一般在子类中重写后用于比较两个对象中的内容是否相同;== 在没有运算符重载的前提下:引用类型用于比较地址是否相同,值类型用于比较值是否相同。
  3. 运算效率不同,一般Equals没有==效率高,因为一般Equals比较的内容比==多;

 重载Equals:

  1. 在类中声明一个名为Equals的方法,并将其标记为重载(override)Object类的Equals方法。

  2. 在重载方法中编写自定义比较逻辑,通常是比较对象的属性是否相等。如果属性的类型是值类型,则可以使用==运算符进行比较;如果属性的类型是引用类型,则需要递归调用Equals方法进行比较。

  3. 重载方法还需要处理传入参数为空或不是当前类类型的情况。

猜你喜欢

转载自blog.csdn.net/HimaRe1/article/details/131110360