引用引數ref 輸出引數out

2021-09-19 01:10:50 字數 667 閱讀 4161

網上看到有些人說,當引數是物件時,ref可以不用寫,如下圖。這樣想其實是有誤的,加不加還是有一點區別的。

這裡有必要解釋一下,當引數是對引用型別,即string或者類物件時,不用ref確實也能達到在方法中修改實參的目的。但是,加ref和不加ref還是有一定區別的。

這裡我們先想一下值型別引數加ref的情況。值型別引數加ref類似於c++的引用,即形參作為實參的別名。而引用型別變數本身就是乙個引用,引用型別形參加ref後,形參就是這個引用的別名,即形參引用和實參引用繫結到一起。但是如果引用型別形參不加ref的話,即是將引用型別實參的引用複製給引用型別形參,並不是別名,也就沒有繫結到一起,這裡其實有一點是和加了ref一樣的,那就是指向相同位址,這時如果對該位址進行資料操作,確實看起來和加了ref一樣,但是一旦方法內形參重新指向新位址的話,實參可不會跟著改變。

總結:引用型別,

out和ref類似,但也有點不同:

ref引數和out引數

引數對於每個學習程式設計的人都很清楚,在任何程式中都不可能沒有引數,下面我就說說乙個特殊的引數型別,其實這個也不算什麼特殊引數了,在c 中已經沒有像c中那樣的指標的概念了,但是有的時候有些時候要寫特殊的處理,其實c 中並不是完完全全放棄這個概念的,下面就寫下這類特殊的引數。引用引數ref 當乙個引數...

C 中的輸出引數ref和out

c 中的輸出引數有兩種 ref和out。其實稱他們為輸出引數不是特別的準確,因為他們並不是像函式返回值一樣 輸出 乙個值,而是將原先存在的值進行編輯。舉個例子 偽 1 一般引數 int i 1 int j 2 int add int i,int j main 2 使用ref int i 1 int ...

out引數和ref引數的區別

out和ref都是在引數傳遞時,傳遞變數的引用。用於希望方法中多個變數值更改後,在方法呼叫後保留更改的值。當乙個方法需要多個返回值時,靠方法返回值就不能勝任,幸好.net有out和ref關鍵字。比如 登入方法,登入結果有成功和失敗,但是如果失敗還要知道原因僅靠返回值就不行了,這個就可以用out和re...