C#学习笔记——参数传递

来源:互联网 发布:nginx htaccess 编辑:程序博客网 时间:2024/06/07 05:38

1、值传递

1)参数为值类型

方法内发生的任何更改对变量的原始值无任何影响。

2)参数为引用类型

EX

staticvoid Change(int[] pArray) ;

Change(arr);

由于参数pArray是对arr的引用,所以有可能更改数组元素的值。但是,试图将参数pArray重新分配到不同的内存位置时,该操作仅在调用方法内有效,并不影响原始变量arr

2、引用传递

1)参数为值类型

EX

staticvoid SquareIt(refint x)

SquareIt(ref n);

参数的值在调用方法后发生更改。

2)参数为引用类型

EX

staticvoid Change(refint[] pArray)

Change(ref arr);

方法内发生的任何更改都会影响调用程序中的原始变量。

3、引用传递的两种关键字

1Ref关键字

若要使用ref参数,则方法定义和调用方法都必须显式使用ref关键字。传递前要进行初始化。

应用场合:可用来交换数值、字符串。

2Out关键字

 out参数传递的变量不需要在传递之前进行初始化,但需要调用方法以便在方法返回之前赋值。

应用场合:希望方法返回多个数值。

4Outref的异同

1refout关键字在运行时的处理方式不同,但在编译时的处理方式相同。因此,如果一个方法采用ref参数,而另一个方法采用out参数,则无法重载这两个方法。

2如果一个方法采用refout参数,而另一个方法不采用这两类参数,则可以进行重载。

3ref参数的参数必须最先初始化,out的参数在传递之前不需要显式初始化。

4)传递数组

数组类型的out参数前必须由被调用方为其赋值,

数组类型的ref参数必须由调用方明确赋值。因此不需要由接受方明确赋值。可以将数组类型的ref参数更改为调用的结果。例如,可以为数组赋以null值,或将其初始化为另一个数组。

原创粉丝点击