C#判断是否相等

判断对象是否相等,因为平时用的一般都是int、bool、string类型的数据是否相等。

同时也是只判断它们的“值”是否相等。于是都是用“==”或是Equal()方法来判断。

但这并不能判断出是否为同一对象。

下面是代码分析:

有图可知,Equal()方法是判断指定对象是否具有相同的值。

由于两个string是直接赋值,就涉及到字符串池的技术。

由下图可知a1和a2的地址也是一样。从结果和各项对比中也可以知道:

string 通过new赋值是会产生不同对象的,只是字符串的值的一致的。

object.ReferenceQuals()才能真正的判断两个对象是否相等。

 

 

 

附加:

下面是通过不同的方式声明了两个值一样的字符串。

由它们的地址可知,一个char占一个字节,所以a、b、c之间地址才会相差一个byte的大小。

同时按顺序,c与aa之间的地址相差5个byte,e4到44,这个原因是由于字符串的不可变性。

所以在执行a+b时,系统为它们相加的值给了一个地址存储,这里的两个字节,

再把a+b得到的值与c相加,这里是3个字节。所以一共是5个字节。

所以这也导致了aa与bb为不同的对象。

 

转载于:https://www.cnblogs.com/xiaoai123/p/6935028.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值