1. 程式人生 > >C# out與ref的區別

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