|
|
|
|
|
|
在前文中,我簡單介紹了C# ref vs out 的區(qū)別,在本文我將繼續(xù)通過多個示例來詳解 C# 中的 ref 與 out 的不同。
C# 中的 ref 和 out 關鍵字用于在方法或函數中傳遞參數,兩者都表明參數是通過引用傳遞的。默認情況下,參數按值傳遞給方法。通過使用這些關鍵字(ref 和 out),我們可以通過引用傳遞參數。
ref 關鍵字
ref 關鍵字通過引用傳遞參數,這意味著當控制權返回到調用方法時,在方法中對此參數所做的任何更改都將反映在該變量中。
示例代碼
public static string GetNextName(ref int id)
{
string returnText = "Next-" + id.ToString();
id += 1;
return returnText;
}
static void Main(string[] args)
{
int i = 1;
Console.WriteLine("Previous value of integer i:" + i.ToString());
string test = GetNextName(ref i);
Console.WriteLine("Current value of integer i:" + i.ToString());
}
輸出
out 關鍵字
out 關鍵字通過引用傳遞參數。這與 ref 關鍵字非常相似。
示例代碼
public static string GetNextNameByOut(out int id)
{
id = 1;
string returnText = "Next-" + id.ToString();
return returnText;
}
static void Main(string[] args)
{
int i = 0;
Console.WriteLine("Previous value of integer i:" + i.ToString());
string test = GetNextNameByOut(out i);
Console.WriteLine("Current value of integer i:" + i.ToString());
}
輸出
ref 和 out 的主要區(qū)別
| ref | out |
|---|---|
在傳遞給 ref 之前,參數必須先初始化。 | 在傳遞給 out 之前,不必初始化參數。 |
在返回到調用方法之前不需要分配或初始化參數的值(由 ref 傳遞)。 | 在返回調用方法之前,被調用方法需要分配或初始化參數值(傳遞給out)。 |
當調用的方法也需要修改傳遞參數時,通過 ref 傳遞參數值很有用。 | 當需要從函數或方法返回多個值時,向 out 方法聲明參數很有用。 |
| 在調用方法中使用參數值之前,不必初始化參數值。 | 參數值必須在使用前在調用方法中初始化。 |
當我們使用 ref 時,數據可以雙向傳遞。 | 當我們使用 out 時,數據僅以單向方式傳遞(從被調用方法到調用方方法)。 |
ref 和 out 在運行時的處理方式不同,而在編譯時的處理方式相同。out 或 ref 參數傳遞。ref/out 關鍵字和方法重載
ref 和 out 在運行時的處理方式不同,而在編譯時它們的處理方式相同,因此如果一個方法將參數作為 ref 而另一個將參數作為 out,則不能重載方法。
示例代碼
public static string GetNextName(ref int id)
{
string returnText = "Next-" + id.ToString();
id += 1;
return returnText;
}
public static string GetNextName(out int id)
{
id = 1;
string returnText = "Next-" + id.ToString();
return returnText;
}
編譯代碼時的輸出:
但是,當一個方法采用 ref 或 out 參數而另一個方法采用相同的參數但不帶 ref 或 out 時,方法重載是可能的。
示例代碼
public static string GetNextName(int id)
{
string returnText = "Next-" + id.ToString();
id += 1;
return returnText;
}
public static string GetNextName(ref int id)
{
string returnText = "Next-" + id.ToString();
id += 1;
return returnText;
}
概括
當我們想要在作為參數傳遞的相同變量中返回一個值時,out 和 ref 關鍵字很有用。
參考文章:
相關文章
