位置:首頁 > 軟件操作教程 > 編程開發(fā) > C# > 問題詳情

C# 輸出參數(shù)

提問人:劉團圓發(fā)布時間:2020-12-04

    除了按引用傳遞值外,還可以使用out關(guān)鍵字,指定所給的參數(shù)是一個輸出參數(shù)。out關(guān)鍵字的使用方式與ref關(guān)鍵字相同(在函數(shù)定義和函數(shù)調(diào)用中用作參數(shù)的修飾符)。實際上,它的執(zhí)行方式與引用參數(shù)幾乎完全一樣,因為在函數(shù)執(zhí)行完畢后,該參數(shù)的值將返回給函數(shù)調(diào)用中使用的變量.但是,二者存在一些重要區(qū)別:

    ?把未賦值的變量用作ref參數(shù)是非法的,但可以把未賦值的變量用作out參數(shù)。

    ?另外,在函數(shù)使用out參數(shù)時,必須把它看成尚未賦值。

    即調(diào)用代碼可以把已賦值的變量用作out參數(shù),但存儲在該變量中的值會在函數(shù)執(zhí)行時丟失。

    例如,考慮前面返回數(shù)組中最大值的MaxValue()函數(shù),略微修改該函數(shù),獲取數(shù)組中最大值的元素索引。為簡單起見,如果數(shù)組中有多個元素的值都是這個最大值,只提取第一個最大值的索引。為此,修改函數(shù),添加一個out參數(shù),如下所示:

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;

}

可采用以下方式使用該函數(shù):

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}");


結(jié)果如下:

The maximum value in myArray is 9

The first occurrence of this value is at element 7

注意,必須在函數(shù)調(diào)用中使用out關(guān)鍵字,就像ref關(guān)鍵字一樣。當(dāng)解析數(shù)據(jù)時out關(guān)鍵字也非常有用,如下所示:

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

{

    return null;

}

    return result;

這段代碼檢查input變量中存儲的值是不是整型值。如果不是,則返回null值;如果是,則通過聲明為result的out變量向調(diào)用函數(shù)返回整型值。

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部