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

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

引用类型的值

当我们要使用引用类型的值的时候,我们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修饰符在传值的时候需要参数有值;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值