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

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

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

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

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

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

猜你喜欢

转载自blog.csdn.net/weixin_33950757/article/details/88551573