Ref和Out的區別和聯絡

2021-08-16 21:15:31 字數 535 閱讀 2911

面試遇到了乙個題目叫做ref和out的區別是啥?

平時經常使用out,偶爾也會使用ref,但是從來沒有仔細分析過他倆有啥區別?

1.傳遞給ref關鍵字的引數必須賦初始值,而out不用。

2.out關鍵字會清空變數,退出函式時所有out引用個變數都要賦值。

該如何理解這句話呢?

static void main(string args)

public static int changeout(out int counts)//這裡會清空counts的值

public static void changeref(ref int counts)

從以上兩個例子可以看到,out在主函式賦值之後,值不會傳入到方法中,需要在方法體中從新賦值,然後會把方法中最終值帶出來。

ref在呼叫方法時,會把方法傳入到方法體中,最終會直接改變主函式中的值。

僅僅從結果看,二者看不出直接區別,只是實現原理不同。

ps:out適合用在需要retrun多個返回值的地方,而ref則用在需要被呼叫的方法修改呼叫者的引用的時候

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

ref和out的區別

ref和out的區別在c 中,既可以通過值也可以通過引用傳遞引數。通過引用傳遞引數允許函式成員更改引數的值,並保持該更改。若要通過引用傳遞引數,可使用ref或out關鍵字。ref和out這兩個關鍵字都能夠提供相似的功效,其作用也很像c中的指標變數。它們的區別是 1 使用ref型引數時,傳入的引數必須...