C 中ref和out的區別與使用

2021-10-05 19:10:40 字數 919 閱讀 9044

c#中ref關鍵字和out關鍵字所實現的功能差不多,都是指定乙個形參按照引用傳遞而不是實參的副本傳遞。

兩者都是按位址傳遞的,使用後都將改變原來引數的數值。

但是二者適用場景還是有些區別的:out適合用在需要retrun多個返回值的地方,而ref則適合用在被呼叫的方法修改呼叫者引數引用的時候。

1.呼叫前初始化

out作為引數的函式在呼叫前,實參可以不賦初始值,

2.在函式內部

在被呼叫函式內,ref引入的引數在返回前不必為其賦初值

3.關於過載

有out|ref關鍵字的方法可以與無out和ref關鍵字的方法構成過載;但如想在out和ref間過載,編譯不能通過

4.用處

ref一般用在傳遞前必須初始化的地方:

例如:string strresfront = "";

strresfront))

out一般用在格式轉換,比如將string轉成int型別

例如:int.tryparse(errheattime,outerrheattime);

==總結==

①ref指定的引數在函式呼叫時候必須初始化,不能為空引用;而out指定的引數在函式呼叫時候可以不初始化

②out指定的引數被呼叫時會清空自己,不能作為引數來傳遞引數值,且必須在函式內賦初值;而ref指定的引數則無此限制

③簡單來說:ref是有進有出,out是只出不進

c 中out和ref的使用區別

c 中out和ref的使用區別 ref是傳遞引數的位址,out是返回值,兩者有一定的相同之處,不過也有不同點。使用ref前必須對變數賦值,out不用。out的函式會清空變數,即使變數已經賦值也不行,退出函式時所有out引用的變數都要賦值,ref引用的可以修改,也可以不修改。如果你想返回多個值怎麼辦,...

c 中ref與out區別

ref 和 out 都是c 中的關鍵字,所實現的功能也差不多,都是指定乙個引數按照引用傳遞。對於編譯後的程式而言,它們之間沒有任何區別,也就是說他們只有語法區別。有如下語法區別 1.ref 傳進去的引數必須在呼叫前初始化,out不必,即 int i somemethod ref i 語法錯誤 som...

C 中out與ref區別

一 ref 參考 與out區別 1 out 只出不進 將方法中的引數傳遞出去,在方法中將該引數傳遞出去之前需要在該方法起始賦初值 在方法外傳遞的該引數可以不用賦值 簡單理解就是 將乙個東西丟擲去之前必須對此東西進行修改,否則就不用丟擲去,修改時的動作必須發生在方法的起始。2 ref 有進有出 在方法...