C#中为何要使用ref参数 (个人理解)

前言

  • 这篇文章并不是想说明,ref的使用或者和out参数的区别等等
  • 而是对C#为什么要放入ref参数给出一些我的个人理解
  • 我也是初学C#,查阅了一些资料给出的个人理解,如果哪里有问题,也欢迎大家不吝赐教~

问题提出

  • 首先,我们知道ref参数的目的是按引用传递参数,可以修改传递过来参数的值,而out也是类似的功能,但是out有明确的含义,标明该参数必须被修改,所以我就不多说ref和out的区别了。
  • 但是,我主要想理解的是,因为对于C#里面的引用类型,它们在传递参数时,应该都是浅拷贝,那么这样加ref和不加ref又有什么区别呢?难道只是为了给值类型设置的吗?

个人理解

  • 首先,加不加ref区别了值传递和引用传递,虽然本质上来说,引用类型的值传递也是引用传递的,但是加上ref就能明确的标明我们是有可能要更改参数值的,并且统一值类型和引用类型的引用传递方法。
  • 第二,对于string这样的类型,具有引用不变性,作为参数传递到函数体后,如果重新给string类型new一个空间的话,原空间的内容是不会改变的,而是当前函数体内的string类型指向了新开辟的空间,当返回后,原来的string类型还指向原空间,所以并没能改变参数的值。那么加入ref参数后呢,函数返回后,原来的string类型会变化指向新的空间,那么内容也就被修改了。
  • 综上,我认为ref参数的目的在于,明确的标明我们是有可能(注意是有可能,这是和out的区别)要更改参数值的,并且统一值类型和引用类型的引用传递方法。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值