C# 學習 18 傳值、輸出、引用、數組、擴展方法

值參數

x就是傳值參數,我們在方法裏操作的是y的副本,不管怎麼操作,y是不變的。
在這裏插入圖片描述

引用類型

在這裏插入圖片描述
下面的例子表示:在調用函數內部創建的stu所修改的屬性值不會影響在調用函數外對象的屬性值。
在這裏插入圖片描述
但,當我們函數外和函數內的stu.name都是Tim的時候,如何分辨是不是同一個對象呢
可以使用所有Object都有的GetHashCode方法來判斷
在這裏插入圖片描述

引用參數

引用參數和傳值參數不同。引用參數並不會創建副本,引用參數的存儲地址就是方法調用時實際參數的內存地址。

ref修飾符顯式指出我要用你了,有意的用你
值類型的引用參數
下面的例子:
在這裏插入圖片描述
引用類型的引用參數

在這裏插入圖片描述

類型引用參數和值參數的區別

對於類型引用參數來說,如果沒有在方法體裏new一個對象,則只會改變原有對象的屬性,hashcode不會發生改變

在這裏插入圖片描述

沒有ref的情況
在這裏插入圖片描述

有ref和沒有ref雖然執行的結果相同,但要注意。
有ref的時候,outterStu和stu指向的是同一個堆內存
沒有ref的時候,outterStu和stu指向的不是同一個堆內存,但不同堆內存裏的地址值是一樣的。

輸出參數

一次生產,一次輸出,return
一次生產,多個輸出,輸出參數

out關鍵字

值類型:

下面就是利用out關鍵字自己實現了tryParse的方法
result 負責接收實現的結果,還會返回true來表明實現過程中是否有異常發生
在這裏插入圖片描述
引用類型的輸出參數

在這裏插入圖片描述

數組參數

以前我們計算一組數組之和的程序如下
在這裏插入圖片描述

有了params參數後
就可以直接在方法裏寫對應的數字了,簡單高效
在這裏插入圖片描述

知識擴展,split.
在這裏插入圖片描述

具名參數

在這裏插入圖片描述

可選參數

有的參數可寫可不寫
當聲明的時候具有默認值的時候,參數可以不寫
在這裏插入圖片描述

擴展方法(this 參數)

實現double類的round方法
在這裏插入圖片描述

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