[學習筆記]C#中out與ref參數傳遞方式

今天恰好學到C#的參數傳遞模式,關於out和ref的區別網上已經有非常多的資料了。
但是普遍都認爲out與ref沒有區別,只是out會被初始化,我覺得僅僅這樣理解C#特意劃分出來的一個參數形式是不夠仔細的,太Navie了,一個語言的任何東西都是有其用意,有其具體實用場景的。

int a=5;
method(ref int a) :在方法中對a的所有改動都會改動原值a(5),這裏其實是對a的內存地址的引用。

int a;
method(out int a) :這裏沒有對a進行初始化,因爲即使初始化了a=5,在method中a也會被自動清空,但是在mothod中對於a的改動還是會體現在原值a上……….
所以我們仔細想一下,這個參數不能傳進去值,卻可以返回參數對其的賦值和改變,那這個參數是幹啥的呢???

其實,out參數引用就是用來作爲返回值的,out的本意也是“輸出”,如下:
實例

out可以允許在一個方法內,返回多個參數,雖然用ref也能實現相同做法,但是out明顯就是C#爲實現多返回值而專門設定的一個參數,也更容易讓人理解:這個參數是作爲返回值媒介,那個參數是作爲參數傳入的。

按我的理解,ref就是用於需要對原參數進行修改的方式,允許多參數同時修改。(如果使用return,幾個不同處理方式的參數就需要寫幾個不同的方法,使用ref可以寫在同一個方法中,寫法簡潔明瞭)

而out就是專門傳空值進入函數,作爲多return值的媒介,這樣就可以實現多返回值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章