關於ref和out的詳細區別

2021-04-12 18:12:36 字數 639 閱讀 3343

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.個人...