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方法描述:

    

扫描二维码关注公众号,回复: 5263771 查看本文章

猜你喜欢

转载自www.cnblogs.com/blogs2014/p/10416871.html