2009年8月12日 星期三

在C#中傳回參數(out & ref)

因為C#裡面並不常使用指標的概念
所以在呼叫函式的時候,如果需要回傳多個值,會覺得無從下手
實際上C#裡面有定義out來幫助程式開發者傳回物件
用法很簡單,在宣告和呼叫的參數前都加上out就可以了

public void GetZero(out int i)
{
i = 0;
}

public void Call()
{
int i;
GetZero(out i);
}

注意,在這時候,由於宣告了參數是out的形態
所以在呼叫前可以不給值(給了值也會在呼叫的時候自動清掉)
但是在函數中一定要給值,否則會有錯誤(如同宣告了回傳值,卻沒有return)

另外,有時候會需要用到一個值,然後再將該值更新
那就需要用到ref了,一樣是在宣告和呼叫的時候都在參數前加上ref

public void AddOne(ref int i)
{
i++;
}

public void Call()
{
int i = 0;
AddOne(ref i);
}

注意,ref的參數必須在呼叫前給值(因為該值在函式中可能被使用到)
而且也可以在呼叫過程中更新(不更新也不會有錯誤)
--
參考資料
out (C# 參考)
ref (C# 參考)
C#中ref和out的使用小結

沒有留言:

張貼留言