4 本我 2个月前 119次点击
除了按引用传递值外,还可以使用out关键字,指定所给的参数是一个输出参数。out关键字的使用方式与ref关键字相同(在函数定义和函数调用中用作参数的修饰符)。实际上,它的执行方式与引用参数几乎完全一样,因为在函数执行完毕后,该参数的值将返回给函数调用中使用的变量。但是,二者存在一些重要区别:
● 把未赋值的变量用作ref参数是非法的,但可以把未赋值的变量用作out参数。
● 另外,在函数使用out参数时,必须把它看成尚未赋值。
即调用代码可以把已赋值的变量用作out参数,但存储在该变量中的值会在函数执行时丢失。
例如,考虑前面返回数组中最大值()函数,略微修改该函数,获取数组中最大值的元素索引。为简单起见,如果数组中有多个元素的值都是这个最大值,只提取第一个最大值的索引。为此,修改函数,添加一个out参数,如下所示:
class Program
{
//定义函数:最大值
static int 最大值(int[] int数组, out int 最大索引)
{
//将数组中的元素依次比较,如果比他大则取而代之
int 最大值 = int数组[0];
最大索引 = 0;
for (int i = 0; i < int数组.Length; i++)
{
if (int数组[i] > 最大值)
{
最大值 = int数组[i];
最大索引 = i;
}
}
return 最大值;
}
static void Main(string[] args)
{
//声明数组:我的数组
int[] 我的数组 = { 1,2,3,4,5,4,5,6,6,6,1,1,1,0};
//声明变量:最大索引
int 最大索引;
WriteLine($"数组的最大值是{最大值(我的数组,out 最大索引)}");
WriteLine($"此值第一次出现在{最大索引+1}处");
ReadKey();
}
}
注意,必须在函数调用中使用out关键字,就像ref关键字一样。
这是什么东西