ref和out都是c#中的關鍵字,所實現的功能也差不多,都是指定乙個引數按照引用傳遞。對於編譯後的程式而言,它們之間沒有任何區別,也就是說它們只有語法區別。總結起來,他們有如下語法區別:
1、ref傳進去的引數必須在呼叫前初始化,out不必,即:
inti;somemethod(
refi );
//語法錯誤
somemethod(
outi );
//通過
2、ref傳進去的引數在函式內部可以直接使用,而out不可:
public
void
somemethod(
refint
i)public
void
somemethod(
outinti)
3、ref傳進去的引數在函式內部可以不被修改,但out必須在離開函式體前進行賦值。
總結:應該說,系統對ref的限制是更少一些的。out雖然不要求在呼叫前一定要初始化,但是其值在函式內部是不可見的,也就是不能使用通過out傳進來的值,並且一定要賦乙個值。也就是說函式承擔初始化這個變數的責任。
ref 和 out 的詳細區別
ref 和out 都是c 中的關鍵字,所實現的功能也差不多,都是指定乙個引數按照引用傳遞。對於編譯後的程式而言,它們之間沒有任何區別,也就是說它們只有語法區別。總結起來,他們有如下語法區別 1 ref傳進去的引數必須在呼叫前初始化,out不必,即 int i somemethod ref i 語法錯...
ref和out的區別
還是以例子來表明吧 1.ref int i 0 有函式fun ref i 和fun i 它們的函式體都是,那麼在執行以下兩段 後 1 int i 0 fun i system.console.writeline i.tostring 2 int i 0 fun ref i system.consol...
ref和out的區別
ref與out 1.out和ref 關鍵字會導致引數通過引用來傳遞 2.ref要求變數必須在傳遞之前進行初始化 3.儘管作為 out 引數傳遞的變數不必在傳遞之前進行初始化,但需要呼叫方法以便在方法返回之前賦值 4.ref 和 out 關鍵字在執行時的處理方式不同,但在編譯時的處理方式相同 5.個人...