值类型使用ReferenceEquals方法

来源:互联网 发布:淘宝申请中国制造 编辑:程序博客网 时间:2024/04/19 18:59

原则:

1、ReferenceEquals方法用于变量的比较,如果是引用类型则比较两个引用是否引用到了相同的实例化对象;

如果是值类型,则先装箱然后传入装箱后的参数,然后比较两个装箱的引用,可以说,比较值类型的时候,总是不同的

即使

 

int i = 3;

bool bIsSame = ReferenceEquals(i, i);

 

也是不一样的,因为这时后台这样处理,对于第一个参数i进行装箱,建立一个临时对象temp1,堆内存开辟内存放好这个int变量的值,然后拿到这个temp1的引用(也就是temp1的物理内存地址),用ptr1表示;对于第二个参数i同样,得到temp2,ptr2;因为两个参数的装箱过程是独立的,所以ptr1与ptr2指向不同的内存区域,当然是不同值,返回false

原创粉丝点击