參考:http://www.microsoftvirtualacademy.com/Content/ViewContent.aspx?et=9851&m=9839&ct=31056
如有錯誤,歡迎指正
Out和Ref作為參數傳遞到方法體中,所傳遞的都是引用地址,兩者在操作上本身沒有區別。
但Out傳遞到方法體時,參數會清空,這意味著在方法體內使用Out參數前必須賦值。
而Ref傳遞到方法體時,其參數也是一起被傳遞進來,所以作為Ref參數傳遞,方法體中可以不對其參數賦值。
下面貼代碼
class PRogram { /*ref是有進有出,out是只出不進*/ static void Main(string[] args) { /*作為Out參數傳遞 傳遞前可以不初始化*/ string outString = "This is the outString value"; Console.WriteLine(outString); outMethod(out outString); Console.WriteLine(outString); /*作為Ref參數傳遞 傳遞前必須初始化*/ string refString = "This is the refString value"; Console.WriteLine(refString); refMethod(ref refString); Console.WriteLine(refString); Console.ReadLine(); } static bool outMethod(out string str) { /*作為Out參數傳遞 傳遞到方法體后 參數被清空*/ //Console.WriteLine(str); Use of unassigned out parameter 'str' /*作為Out參數傳遞 值必須在方法體內賦值*/ /*作為Out參數傳遞 返回前值必須初始化*/ str = "This is the new outString value"; return true; } static bool refMethod(ref string str) { Console.WriteLine(str); /*作為Ref參數傳遞 返回前值可以不初始化*/ return true; } }
新聞熱點
疑難解答