您的位置:首页 > 其它

Equals和==的比较

2016-02-16 23:49 148 查看
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。

equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。

oA和oB是两个不同的对象,引用不一样,因此equals为False。

oA和oB存储地址都不一样,因此 == 也为false, 即使两个值是相等的。

MyClass oA = new MyClass();
MyClass oB = new MyClass();
Console.WriteLine(oA == oB);
Console.WriteLine(oA.Equals(oB));


oA和oC是同一个对象,因此任何对象的赋值,只改变一个地址上的值,

两个对象的地址和值永远相等。

如果oA=1,再设置oC=2,最后两个值都会等于2

MyClass oC = oA;
Console.WriteLine(oA == oC);
Console.WriteLine(oA.Equals(oC));


参考引用:

http://new-fighter.iteye.com/blog/1634786
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: