ref參數

功能,定義方式,注意事項,

功能

ref功能: ref 關鍵字使參數按引用傳遞。其效果是,當控制權傳遞迴調用方法時,在方法中對參數所做的任何更改都將反映在該變數中。簡單點說就是,使用了refout的效果就幾乎和C中使用了指針變數一樣。它能夠讓你直接對原數進行操作,而不是對那個原數的Copy進行操作。

定義方式

若要使用 ref 參數,則方法定義和調用方法都必須顯式使用 ref 關鍵字。例如:
class RefExample
{
static void Method(ref int i)
{
i = 44;
}
static void Main()
{
int val = 0;
Method(ref val); // val is now 44
}
}

注意事項

傳遞到 ref 參數的參數必須最先初始化。這與 out 不同,out 的參數在傳遞之前不需要顯式初始化。
儘管 refout 在運行時的處理方式不同,但它們在編譯時的處理方式是相同的。因此,如果一個方法採用 ref 參數,而另一個方法採用 out 參數,則無法重載這兩個方法。
例如,從編譯的角度來看,以下代碼中的兩個方法是完全相同的,因此將不會編譯以下代碼:
class CS0663_Example
{
// compiler error CS0663: "cannot define overloaded
// methods that differ only on ref and out"
public void SampleMethod(ref int i)
{
}
public void SampleMethod(out int i)
{
}
}
但是,如果一個方法採用 refout 參數,而另一個方法不採用這兩類參數,則可以進行重載,如下所示:
class RefOutOverloadExample
{
public void SampleMethod(int i)
{
}
public void SampleMethod(ref int i)
{
}
}

相關詞條

熱門詞條

聯絡我們