问 ==和equals区别
rt
------解决方案--------------------==指引用是否相同  
 equals()指的是值是否相同      
 字符串是特殊的~  
 字符串是对象,新建个“abc”的字符串的时候,系统会先到内存中找,看是否存在‘a’,‘b’,‘c’,如果存在,引用,不存在新建  
 所以你打出来的是true 
------解决方案--------------------在 C# 中它们的区别非常小,大多数情况下可以认为它们是相同的...   
 Equals 的默认实现仅支持引用相等,但派生类可重写此方法以支持值相等。   
 默认情况下,运算符 == 通过判断两个引用是否指示同一对象来测试引用是否相等,因此引用类型不需要实现运算符 == 就能获得此功能。当类型不可变时,意味着实例中包含的数据不可更改,此时通过重载运算符 == 来比较值是否相等而不是比较引用是否相等可能会很有用,因为作为不可变的对象,只要它们具有相同的值,就可以将它们看作是相同的。建议不要在非不可变类型中重写运算符 ==。    
 若要检查引用相等性,应使用 ReferenceEquals。若要检查值相等性,应使用 == 或 Equals。
------解决方案--------------------==对于内置值类型,判断的是两个对象的代数值是否相等。它会根据需要自动进行必要的类型转换,并根据两个对象的值是否相等返回true或者false. 
 而对于用户定义的值类型,如果没有重载==操作符,==将是不能够使用的。例如:struct 
 默认对于引用类型,用于比较两个引用类型的对象是否是对于同一个对象的引用 
 Equals方法对于值类型和引用类型的定义不同,对于值类型,类型相同,并且数值相同(对于struct的每个成员都必须相同),则Equals返回true,否则返回false; 
 默认对于引用类型,用于比较两个引用类型的对象是否是对于同一个对象的引用