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 有進有出 在方法...