概念
值传递 当方法传递的参数是值类型时,变量的栈数据会完整地复制到目标参数中,即实参和形参中的数据相同但存放在内存中的位置不同。所以,在目标方法中对形参所做的更改不会对调用者的初始变量产生任何影响。
引用传递 当方法传递的参数是引用类型时,只是将变量的引用复制到目标参数中,实参和形参的引用指向内存中的同一位置。所以,在目标方法中对形参所做的更改会影响调用者的初始变量。
C#中的特殊参数
(1)引用参数---ref
结构、整数等类型做参数时默认是传值的;
类、数组等类型做参数时默认是传引用的;
在传值的类型前加上关键字ref,并在调用时在实参上也加上关键字ref,即可改为传引用。
(2)输出参数---out
C# 除了传值、传引用之外,还可以将数据从一个函数内部单向传出。
需要使用关键字out来修饰参数类型;
【注】:ref与out都是传引用。区别在于,out不接受调用者传来参数的数据值,而是把该参数当做未赋值的参数。
ref & out 区别
①ref 可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所以你必须初始化一次。ref是有进有出,out是只出不进。
②传递到 ref 参数的参数必须最先初始化,out 的参数在传递之前不需要显式初始化。
③out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候
参考文章
1. https://blog.csdn.net/susan19890313/article/details/6841541