对于值类型:
int age1 = 30; byte age2 = 30;
1、== 比较的是值内容
2、age2.Equals(age1) = false; Equals比较前需要转换成同类型,age1(int型)需显示转换成byte型
3、age1.ReferenceEquals(age2) = false; ReferenceEquals比较(判断两个对象的引用是否相等,对于值类型,因为每次判断前都必须进行装箱操作,
也就是每次都生成了一个临时的object,因而永远返回false。)
String类型:字符串是特殊的引用类型(CLR可以通过一个string对象共享多个完全一致的string内容)
string name1 = "Jack"; string name2 = "Jack"; object o1 = name1; object o2 = name2;
其他引用类型
string name1 = new string(new char[] { 'J', 'a', 'c', 'k' }); string name2 = new string(new char[] { 'J', 'a', 'c', 'k' });
object o1 = name1;
object o2 = name2;
对于引用类型:
1、== 比较的是类型对象指针
2、Equals()比较的是托管堆上存储的内容
3、ReferenceEquals()比较的也是对象本身