C 中ref引數及out引數對比

2021-09-09 03:04:54 字數 1080 閱讀 1260

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 當乙個引數...