第七节、C#方法参数传递方式 关键字(out 、ref)

C#方法的参数有几种类型

  1. 值参数(就是简单的类型)
  2. 引用型参数(以ref修饰声明)
  3. 输出参数(以out修饰声明)
  4. 数组型参数(以params修饰声明)
  5. 对象型参数(以一个对象修饰声明)

值类型传递(最终参数值不会改变):

方法简单的值参数,传进去值在方法更改,但当控制传递回调过程时,不会保留更改值。

简单理解:方法传的值参数在方法中即使更改了参数值,最终也是不会改变。

引用类型传递(最终值改变):

out与ref(都是按地址传递的,使用后将改变原来参数的数值)

out:地址/引用传递,调用时该参数不需要先初始化,被调用方负责该参数的初始化(简记“只出不进”)。适用于多个返回值,如果只有一个返回值,直接用函数返回值就行,。

ref:地址/引用传递,调用时该参数必需已经初始化(简记“有进有出”)。适用于 当控制权传递回调方法时,在方法中对参数的任何更改都将反映在该变量中就用ref;

总结:

  1. 使用ref型参数时,传入的参数必需先被初始化,对于out而言,必需在方法中对其完成初始化。
  2. 使用ref和out时,在方法的参数和直接方法时,都要加ref或者out关键字,以满足匹配。
  3. out适用于需要返回多个值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。
原文地址:https://www.cnblogs.com/liuzz/p/14472044.html