.NET中的值传递与引用传递

今天被值传递、引用传递、值类型和引用类型搞晕了。。搜索到下面两篇信息总算是清楚了许多~大笑

简单说来,值传递传递的时候拷贝,就算传递的是引用类型,依然是地址的拷贝,所以之前的地址不变,交换之类的不会成功,但若改变变量的值,则那个地址存的东西改变了,是会改变成功的。

-------------------------------------------------------------------------------------------------------------------

值类型:

按值传递:对参数及其成员(如果有)的赋值不能反映到调用者
按引用传递(ref/out):对参数的赋值将反映到调用者

引用类型:
按值传递:对参数的赋值不能反映到调用者,但是给其成员(如果有)赋值并反映到调用者

按引用传递(ref/out):对参数的赋值将反映到调用者

-------------------------------------------------------------------------------------------------------------------

        值传递(不带ref或者out的):顾名思义,传递的是值,该传递会将值复制一个传递个形参。
引用传递(带ref或者out的):同样,传递的是引用,在C和C++中叫做指针,其实就是地址,该传递不会复制一个值,只是把自己的地址传递给形参。
        二者的区别是值传递参数的值不会被带回,而引用传递参数的值会改变。
这样说可能会有一个问题,就是当我传递一个引用类型的参数的时候值也将被带回,这就不对了呀!
其实不然,之所以出现这种情况是因为引用类型的变量自己本身就是一个引用,因此在传递的时候传的就是一个引用,即地址,这样当值发生变化的时候值也会被带回。
这么看那对于引用类型而言加ref和不加就没有区别了吗?
        答案是否定的。回到最初,值传递会将自己的值复制一个传递给形参,这样的话,实参和形参只是引用相同,方法中将形参重新初始化的时候(比如string类型),参数的值并不被带回。
         但是引用传递不一样了,它是将自己的地址传递给形参,这样的话实参和形参公用一个地址,当你在方法内无论你如果初始化形参,其值始终都会别带回。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值