C# 里面的两个等号(==)操作符与Equals是否是同一个意思

来源:百度知道 编辑:UC知道 时间:2024/06/16 13:16:17
请问:
== 操作符 与 Equals方法 起的作用是不是完全一样?
谢谢!

这个问题问得不准确,因为它们都是可以重载的……

一般情况下对于原生的类型,==与类本身的Equals方法是一样的。
注意,这里的Equals不是object的静态方法Equals,那个带两个参数;
比较引用相等,请使用ReferenceEquals

有时相同,有时不同。

相同时:
当带比较的两个对象为值类型对象时,Equals方法和==的效果是相同,因为最后调用的都是Equals方法,只是为了方便,重载==的方法而已。

不同时:
如果比较的是两个引用类型的对象,那就会有些区别了。==比较两个引用类型的对象时,比较的是他们各自存储在内存栈中的引用地址(其实值类型比较的也是这个,调用的方法是ReferencesEquals方法)。而此时的Equals方法调用的对象内部的Equals()进行比较,具体的实现在对应类的内部实现各有不同,所以有时的返回值有所不同。

1.equals()比较的是对象的值,==比较的是对象的地址。
2.equals()方法是可以重写.
3.在C#中,==个人还没发现不能比较的对象,到处都用,而Equals只比较字符串.

不一样,。 一个是 完全 另一个 是 数字相当。。

一个是运算符,一个是方法。
==可以通过重写Equals来实现自定义类的相等比较,即运算符重载

不完全一样