原则:
1、ReferenceEquals方法用于变量的比较,如果是引用类型则比较两个引用是否引用到了相同的实例化对象;
如果是值类型,则先装箱然后传入装箱后的参数,然后比较两个装箱的引用,可以说,比较值类型的时候,总是不同的
即使
int i = 3;
bool bIsSame = ReferenceEquals(i, i);
也是不一样的,因为这时后台这样处理,对于第一个参数i进行装箱,建立一个临时对象temp1,堆内存开辟内存放好这个int变量的值,然后拿到这个temp1的引用(也就是temp1的物理内存地址),用ptr1表示;对于第二个参数i同样,得到temp2,ptr2;因为两个参数的装箱过程是独立的,所以ptr1与ptr2指向不同的内存区域,当然是不同值,返回false