C#基础值参数和引用参数的运行原理分析

01传递值类型参数:
值参数是实参的值传递给形参,实质是复制一份实参给形参,不影响在方法调用中的实参的值

在这里插入图片描述内存分配图如下
在这里插入图片描述

02值参数传递引用类型参数:
在这里插入图片描述
内存原理:

在Add方法中形参f拿到了实参a在栈中的副本,副本中存储着对象的地址。所以,f与a指向了同一个对象。
    这时操作的不是副本,而是副本所指的对象,即操作a所指对象
    在这里插入图片描述
03值参数引用传递的参数时
在这里插入图片描述Add方法中改变了f所指向的对象,指向一个new的student对象,此时a仍指向原对象,这时再对student进行操作,
便不再会影响实参a所指的对象。
在这里插入图片描述
04.按引用传递参数(引用参数)
 此时不再复制实参在栈中的副本,而是将实参在栈中的地址传给形参,也就是实参与形参共用栈中的值。此时在方法中对形参所 做的任何操作,都会影响实参(说白了就是形参和实参都是同一个)
    按引用传递也分为值类型和引用类型两种情况
    当传递值类型参数时:
    在这里插入图片描述
    内存原理:
    
    在这里插入图片描述
    当传递值类型参数时:
    在这里插入图片描述
    原理图
    在这里插入图片描述

在这里插入图片描述
原理图
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值