C#中equals方法和==的区别

Msdn中对equals方法的解释是:确定指定的对象是否等于当前对象。

Equals方法是比较对象的内容,而==则是比较整个对象是否相等。

Equals方法判断的是堆中的值,而==则判断的是堆栈中的值。

C#提供值类型和引用类型两种。

Equals是用来判断两个对象(除string类型外)是否相等,相等的条件是:值,地址,引用全相等,因为string类重写了equals方法,所以当string类型的对象用equals方法比较时只比较两个对象的值,相等返回true。这时就和==含义相同。而且对于值类型来说,equals方法和==都是比较值是否相同,所以这两个都可以使用。

对于引用类型来说,在堆栈中存储的是对象的地址,那么==就是比较两个地址是否相等,即是否指向同一个对象;equals方法则是比较两个对象在堆中的数据是否一样,即两个引用类型是否是同一对象的引用。

posted @ 2016-04-27 16:07  罂粟几何  阅读(211)  评论(0编辑  收藏  举报