==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
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));