位置:首页 > 软件操作教程 > 编程开发 > C# > 问题详情

C# 输出参数

提问人:刘团圆发布时间:2020-12-04

    除了按引用传递值外,还可以使用out关键字,指定所给的参数是一个输出参数。out关键字的使用方式与ref关键字相同(在函数定义和函数调用中用作参数的修饰符)。实际上,它的执行方式与引用参数几乎完全一样,因为在函数执行完毕后,该参数的值将返回给函数调用中使用的变量.但是,二者存在一些重要区别:

    •把未赋值的变量用作ref参数是非法的,但可以把未赋值的变量用作out参数。

    •另外,在函数使用out参数时,必须把它看成尚未赋值。

    即调用代码可以把已赋值的变量用作out参数,但存储在该变量中的值会在函数执行时丢失。

    例如,考虑前面返回数组中最大值的MaxValue()函数,略微修改该函数,获取数组中最大值的元素索引。为简单起见,如果数组中有多个元素的值都是这个最大值,只提取第一个最大值的索引。为此,修改函数,添加一个out参数,如下所示:

static int MaxValue(int[] intArray, out int maxlndex)

{

    int maxVal = intArray[0];

    maxlndex = 0;

    for (int i = 1; i < intArray.Length; i++)

    {

        if (intArray[i] > maxVal)

        {

            maxVal = intArray[i];

            maxlndex = i;

        }

    }

    return maxVal;

}

可采用以下方式使用该函数:

int [] myArray = { 1, 8, 3, 6, 2, 5, 9, 3, 0, 2 };

WriteLine("The maximum value in myArray is " + $"{MaxValue(myArray, out int maxlndex)}");

WriteLine("The first occurrence of this value is " + $" at element {maxlndex + 1}");


结果如下:

The maximum value in myArray is 9

The first occurrence of this value is at element 7

注意,必须在函数调用中使用out关键字,就像ref关键字一样。当解析数据时out关键字也非常有用,如下所示:

if (!int.TryParse(input, out int result))

{

    return null;

}

    return result;

这段代码检查input变量中存储的值是不是整型值。如果不是,则返回null值;如果是,则通过声明为result的out变量向调用函数返回整型值。

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部