ref和out區別概要

2021-09-06 01:47:01 字數 490 閱讀 6662

一直知道ref和out都是引用型別傳值的。不過沒太明白他們之間的區別,今天又長了點小知識。

大夥都知道,進行引數傳遞的時候如果想傳遞位址,可以使用ref或者out關鍵字。其實兩者都是按位址傳遞的,使用後都將改變原來的數值。

主要不同點:

ref是可以把引數的值傳遞進函式的,但是out在函式中必須首先賦值才能使用,這樣就會覆蓋原來傳進來的值。簡要概括就是ref有進有出,而out是只出不進。

例如下面兩個方法中,valuewithref無需重新賦值,而valuewithout如果不為i重新賦值便會編譯錯誤。

//正常執行,輸出結果仍為傳入時的i的值

static

void

valuewithref(

refint

i)//

報錯static

void

valuewithout(

outinti)

ref和out區別概要

一直知道ref和out都是引用型別傳值的。不過沒太明白他們之間的區別,今天又長了點小知識。大夥都知道,進行引數傳遞的時候如果想傳遞位址,可以使用ref或者out關鍵字。其實兩者都是按位址傳遞的,使用後都將改變原來的數值。主要不同點 ref是可以把引數的值傳遞進函式的,但是out在函式中必須首先賦值才...

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