c#学习体会:使用 ref 和 out 传递数组(downmoon)希望与大家分享
与所有的 out 参数一样在使用数组类型的 out 参数前必须先为其赋值即必须由接受方为其赋值例如
publicstaticvoidMyMethod(outint[]arr)
{
arr=newint[];//数组arr的明确委派
}
与所有的 ref 参数一样数组类型的 ref 参数必须由调用方明确赋值因此不需要由接受方明确赋值可以将数组类型的 ref 参数更改为调用的结果例如可以为数组赋以 null 值或将其初始化为另一个数组例如
publicstaticvoidMyMethod(refint[]arr)
{
arr=newint[];//arr初始化为一个新的数组
}
下面的两个示例说明 out 和 ref 在将数组传递给方法上的用法差异
示例
在此例中在调用方(Main 方法)中声明数组 myArray并在 FillArray 方法中初始化此数组然后将数组元素返回调用方并显示
usingSystem;
classTestOut
{
staticpublicvoidFillArray(outint[]myArray)
{
//初始化数组(必须):
myArray=newint[]{};
}
staticpublicvoidMain()
{
int[]myArray;//初始化数组(不是必须的!)
//传递数组给(使用out方式的)调用方:
FillArray(outmyArray);
//显示数组元素
ConsoleWriteLine(数组元素是:);
for(inti=;i<myArrayLength;i++)
ConsoleWriteLine(myArray[i]);
}
}
输出
数组元素是:
示例
在此例中在调用方(Main 方法)中初始化数组 myArray并通过使用 ref 参数将其传递给 FillArray 方法在 FillArray 方法中更新某些数组元素然后将数组元素返回调用方并显示
usingSystem;
classTestRef
{
publicstaticvoidFillArray(refint[]arr)
{
//根据需要创建一新的数组(不是必须的)
if(arr==null)
arr=newint[];
//否则填充数组就可以了
arr[]=;
arr[]=;
}
staticpublicvoidMain()
{
//初始化数组:
int[]myArray={};
//使用ref传递数组:
FillArray(refmyArray);
//显示更新后的数组元素:
ConsoleWriteLine(数组元素是:);
for(inti=;i<myArrayLength;i++)
ConsoleWriteLine(myArray[i]);
}
}
输出
数组元素是: