C#中有两种不同的相等:
引用相等和值相等。
值相等意味着两个对象相同的值,例如,两个值为1的整数就具有值相等性;
引用相等意味着要比较的不是两个对象,而是两个对象的引用,且两者引用的是同一个对象。若要检查引用相等性,应使用 ReferenceEquals。
若要检查值相等性,请使用 Equals
object m1 =1 ;
object m2 = 1;
Console.WriteLine(m1==m2); //false
Console.WriteLine(m1.Equals(m2)); //true

比较的是栈内的内容,对于值类型而言,”“比较的就是两个对象的值,
除字符串(字符串类型是一个特殊情况)以外的引用类型比较的就是两个引用类型在栈内的地址
Equals方法是定义在Object中的虚方法,用来比较两者引用对象的值是否相等,.NET中类型就都可以重写Equals方法,
例如,在.NET中string类型就重写了Equals方法,用于比较两个字符串的值是否相等,而不是字符串引用是否相等