ref 和 out 的詳細區別

2021-05-28 17:20:05 字數 740 閱讀 3258

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傳進來的值,並且一定要在函式內賦乙個值。或者說函式承擔初始化這個變數的責任。

關於ref和out的詳細區別

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

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