c 中ref與out區別

2021-07-29 08:17:13 字數 653 閱讀 7227

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

對於編譯後的程式而言,它們之間沒有任何區別,也就是說他們只有語法區別。

有如下語法區別:

1.ref 傳進去的引數必須在呼叫前初始化,out不必,即:

int i;

somemethod( ref i ); // 語法錯誤

somemethod( out i ); //通過

2.ref 傳進去的引數在函式內部可以直接使用,而out不可:

public void somemethod( ref int i)

public void somemethod( out int i)

3.ref 傳進去的引數在函式內部可以不被修改,但out必須在離開函式體進行賦值。

ref 在引數傳遞之前必須初始化;而out 則在傳遞前不必初始化,且在。。。值型別與引用

型別之間的轉換過程稱為裝箱與拆箱。

總結:應該說,系統對ref 的限制是更少一些的。out雖然不要求在呼叫前一定要初始化,但是其

值在函式內部是不可見的,也就是不能使用通過out傳進來的值,並且一定要在函式內賦

乙個值。或者說函式承擔初始化這個變數的責任。

C 中out與ref區別

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

c 中ref與out的區別

一般情況下是乙個方法返回乙個值,當需要乙個方法返回多個值的時候就要用到ref out.他們基本沒什麼區別,就是一些語法區別。1.ref傳進去的引數必須在呼叫前初始化,out不用。int i somemethod ref i 語法錯誤 somemethod out i 正確2.ref傳進去的引數可以直...

C 中的 out 與 ref 的區別

ref 必須是要在函式體外初始化,強調的是傳入外面的值,然後在函式體裡面進行修改,然後再傳出去。1 ref傳進去的引數必須在呼叫前初始化,out不必,即 1 2 3 4 5 inti somemethod refi 語法錯誤 somemethod outi 通過 out 必須要在函式體內初始化,在外...