c ref 和 out 的區別

2022-02-04 10:54:19 字數 463 閱讀 1320

乙個用關鍵字 ref 標示,乙個用 out 標示。

牽扯到資料是引用型別還是值型別。

一般用這兩個關鍵字你是想呼叫乙個函式將某個值型別的資料通過乙個函式後進行更改。傳 out 定義的引數進去的時候這個引數在函式內部必須初始化。否則是不能進行編譯的。ref 和 out 都是傳遞資料的位址,正因為傳了位址,才能對源資料進行修改。

一般情況下不加 ref 或者 out 的時候,傳值型別的資料進去實際上傳進去的是源資料的乙個副本,也就是在記憶體中新開闢了一塊空間,這裡面存的值是與源資料相等的,這也就是為什麼在傳值型別資料的時候你如果不用 return 是無法修改原值的原因。但是你如果用了 ref,或者 out,這一切問題都解決了,因為他們傳的是位址。

out 比起 ref 來說,還有乙個用法就是可以作為多返回值來用,都知道函式只能有乙個返回值,c#裡,如果你想讓乙個函式有多個返回值,那麼out能很容易解決。

其實在c中,傳遞指標是類似的效果

C ref和out的區別

首先 兩者都是按位址傳遞的,使用後都將改變原來引數的數值。其次 ref可以把引數的數值傳遞進函式,但是out是要把引數清空,就是說你無法把乙個數值從out傳遞進去的,out進去後,引數的數值為空,所以你必須初始化一次。這個就是兩個的區別,或者說就像有的說的,ref是有進有出,out是只出不進。需求假...

c ref與out的區別

c ref與out的區別 相同點 都是輸出引數 不同點 ref 1 必須初始化,即 必須賦初始值 2.有進有出 3 用在需要被呼叫的方法修改呼叫者的引用的時候。4 是傳遞引數的位址 out 1.不需要初始化,即 不需要賦初始值 2 只出不進 3 用在需要retrun多個返回值的地方 4 返回值 通過...

C Ref 與out 的區別

在c 中,有四種傳遞引數方式 1.傳值 value 無額外修飾符 2.傳址 reference 需修飾符ref,傳入函式的引數必須先賦值 3.輸出引數 output 需修飾符out,適用於return多個返回值,必須在方法中賦值 4.陣列引數 array 需修飾符params 而out是只出不進 外...