C# 中==与Equals方法比较

描述

对于比较值类型、string类型 2者无区别。

引用类型,Equals比较的是二者指向内容是否一致;

  ==比较二者的地址是否是同一个地址。

详细

1. 对于值类型,==和Equals()等价,都是比较存储信息的内容(即比较两个对象的值是否相同);

2. 对于除string之外的引用类型,==比较的是栈的内容是否相同(即是否指向同一个堆中地址),Equals()判断是否对同一个对象的引用(即堆中的内容是否相同);

3. string是一种特殊的引用类型,在C#语言中,重载了Object对象的很多方法(包括equals()方法),使string对象用起来就像是值类型一样

   下图为string类中重载的Equals方法描述:

    

4. 对于一些自定义类,我们看看是否有重载Equals方法,如果没有则默认为基类的Equals方法(如果基类没有重载Equals方法则为Object类Equals方法),Object类中Equals方法比较也是栈中的地址,而不是堆中的内容。

     下图为Object类中Equals方法描述:

    

posted @ 2019-02-22 10:34  淘小人  阅读(248)  评论(0编辑  收藏  举报