函数参数out、ref都是向外传递参数值,以弥补返回值只有一个的缺陷。函数参数可以有多个out参数,因此这样的函数返回的数据是开放的。out和ref的区别是out不用为out参数附初值,而ref必须附初值。
python可以return可以返回多个参数,一般不必要使用out和ref参数。这降低了python的难度。
public static void FillArray(out int[] arr)
{
arr = new int[] { 1, 2, 3, 4, 5 };
}
public static void FillArrayRef(ref int[] arrRef)
{
arrRef = new int[] { 6, 7, 8, 9, 0 };
}
public static void MaxMinValue(int[] intArray, out int max, out int maxIndex)
{
max = intArray[0];
maxIndex = 0;
for(int i=1;i<intArray.Length;i++)
{
if (intArray[i] > max)
{
max = intArray[i];
maxIndex = i;
}
}
}
static void Main(string[] args)
{
//用out参数填充数组
int[] theArray;//不用初始化
useout.FillArray(out theArray);
Console.WriteLine("theArray:");
foreach(int i in theArray)
{
Console.Write(i);
Console.Write(" ");
}
//用ref参数填充数组
int[] arrRef = new int[5];//需要初始化
u