判断对象是否相等,因为平时用的一般都是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为不同的对象。