ref 關鍵字和out關鍵字均會導致引數通過引用來傳遞(相同點1)。這是兩者的共同點。
通過引用傳遞引數,會使方法中對引數所做的任何修改都將反映在該變數中。
兩者還有乙個共同點,那就是:若要使用 ref 引數或out引數,則方法定義和呼叫方法都必須顯式使用 ref 關鍵字或out關鍵字(相同點2)。
那兩者有什麼不同點呢?
兩者的不同點就是:傳遞到 ref 引數的引數必須最先初始化,而out引數在傳遞之前不需要顯式初始化(不同點)。
下面來看個簡單的例子,該例項包括兩部分。
先給出第一部分**,如下:
static void main(string args)
private static void expwithref(ref int x)
private static void expwithoutref(int y)
這部分**執行後輸出「1 0」。
因為expwithref
方法通過引用傳遞引數,所以執行完**「
expwithref(ref a)」後,a
的值被改變,變成了1。而
expwithoutref
方法通過值傳遞引數,所以執行完**
「expwithoutref(b)」
後,b的值保持不變,仍為0。
另外,expwithref
方法通過ref引用傳遞引數,所以方法定義和呼叫方法都顯式地使用了 ref 關鍵字,且實參a
在函式呼叫前已被初始化。
下面給出第二部分例項**:
static void main(string args)
private static void expwithout(out int x)
這部分**中,
expwithout
方法通過out引用傳遞引數,所以引數a在方法呼叫前並沒有初始化,而是在
expwithout
方法內部進行初始化,並對其加1,函式呼叫返回後引數a的值變成了1(記住,這裡是引用傳遞引數),所以最後的輸出結果為「1」。
好了,就這些了。
C 中out引數 ref引數與值引數的用法及區別
這篇文章主要給大家介紹了關於c 中out引數 ref引數與值引數的用法及區別的相關資料,文中通過示例 介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧 前言 c 方法中引數型別 有4種引數型別,有時候很難記住它們的不同特徵,下圖對它們做乙個總結 值...
C 中out引數 ref引數與值引數的用法及區別
這篇文章主要給大家介紹了關於c 中out引數 ref引數與值引數的用法及區別的相關資料,文中通過示例 介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧 前言 c 方法中引數型別 有4種引數型別,有時候很難記住它們的不同特徵,下圖對它們做乙個總結 值...
ref引數和out引數
引數對於每個學習程式設計的人都很清楚,在任何程式中都不可能沒有引數,下面我就說說乙個特殊的引數型別,其實這個也不算什麼特殊引數了,在c 中已經沒有像c中那樣的指標的概念了,但是有的時候有些時候要寫特殊的處理,其實c 中並不是完完全全放棄這個概念的,下面就寫下這類特殊的引數。引用引數ref 當乙個引數...