C# out與ref的區別
out 關鍵字會導致引數通過引用來傳遞。這與 ref 關鍵字類似,不同之處在於 ref 要求變數必須在傳遞之前進行初始化。若要使用 out 引數,方法定義和呼叫方法都必須顯式使用 out 關鍵字。例如:
class OutExample
{
static void Method(out int i)
{
i = 44;
}
static void Main()
{
int value;
Method(out value);
// value is now 44
}
}
儘管作為 out 引數傳遞的變數不必在傳遞之前進行初始化,但需要呼叫方法以便在方法返回之前賦值。
同樣的 屬性不是變數,因此不能作為 out 引數傳遞。
示例
當希望方法返回多個值時,宣告 out 方法很有用。使用 out 引數的方法仍然可以將變數作為返回型別來訪問,但它還可以將一個或多個物件作為 out 引數返回給呼叫方法。此示例使用 out 在一個方法呼叫中返回三個變數。請注意,第三個引數所賦的值為 Null。這樣使方法可以有選擇地返回值。
class OutReturnExample
{
static void Method(out int i, out string s1, out string s2)
{
i = 44;
s1 = "I've been returned";
s2 = null;
}
static void Main()
{
int value;
string str1, str2;
Method(out value, out str1, out str2);
// value is now 44
// str1 is now "I've been returned"
// str2 is (still) null;
}
}