值类型与引用类型及ref修饰符与out修饰符的关系

牧云@^-^@ 提交于 2020-01-20 00:28:55

值类型与引用类型的区别;
下面我用一个例子,画一个图来说明一下值类型与引用类型的区别;

引用类型的值

当我们要使用引用类型的值的时候,我们new一个新的实体,但是该实体根本就没有创建,而是直接与被引用值的地址建立联系,也就是说,该创建的新的实体的与被引用的值其实就是一个东西。当新创建的实体改变时,被引用的值也会改变。被引用的值被改变时,新创建的实体的值也会改变。

如下图,堆中有一个引用类型的值名a,我们现在需要调用a的值,用b=new a,获得了a的值,这时b并未创建一个新的实体,而是将调用地址直接指向了a,这样当我们改变b的值的时候,a的值随之改变。同理a的值改变时b的值也随之改变。
在这里插入图片描述

值类型的值

值类型的值在执行b=new a 代码的时候,会在堆里面重新分出控件然后将a的值复制到新的内存空间中,这时候b指向的是新创建出来的空间b。b的值改变的时候,a的值不受影响。
在这里插入图片描述
ref修饰符,的作用是将值类型的参数修饰为引用类型。
out修饰符的功能主要是返回方法中的参数。
out修饰符和ref修饰符的功能都是相同的,就是将参数作为引用类型的值进行传递。
这样我们即使没有返回值,也相当于获得了该方法的返回值。
out修饰符与ref修饰符的不同之处在于:
out修饰符修饰的参数在传参的时候可以不用赋值,但是在方法执行完之前一定得赋值。
ref修饰符在传值的时候需要参数有值;

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!