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