ref和out的區別

2021-07-29 02:57:53 字數 965 閱讀 2057

還是以例子來表明吧:

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.console.writeline(i.tostring());

(1)的輸出是1,(2)的輸出是3,

2. out:

int i; //注意,這樣個裡就是宣告了變數i,並木有對其初始化

有函式fun(ref i)、fun(out i)和fun(i)

它們的函式體都是,那麼在執行以下三段**後:

(1)int i = 0; fun(i); system.console.writeline(i.tostring());

(2)int i = 0; fun(ref i); system.console.writeline(i.tostring());

(3)int i = 0; fun(out i); system.console.writeline(i.tostring());

(1)和(2)在編譯的時候都會報錯:不準確 cs0165: 用了未賦值的區域性變數「i」

而(3)能正常編譯,而且輸出3

最後總結一次:

ref和out這樣個2個關鍵字都能夠提供相似的功效,其作用也很像c中的指標變數。稍有不相同之處是:
用ref型引數時,傳入的引數必須先被初始化。而out則不要要,對out而言,就必須在方法中對其完成初始化。
用ref和out時都必須注意,在方法的引數和執行方法時,都要加ref或out關鍵字。以滿足匹配。
out更適合用在要要return多個返回值的地方,而ref則用在要要被調出使用的方法修改調出使用者的引用的時候。

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型引數時,傳入的引數必須...

ref和out的區別

簡介 ref和out都是c 中的關鍵字,所實現的功能也差不多,都是指定乙個引數按照引用傳遞。對於編譯後的程式而言,他們之間沒有任何區別,也就是說他們只有語法的區別 主要區別分析 注 這裡只介紹比較重要的區別,其他的區別通過這幾條都可以分析出來 1 static void main string ar...