1. 程式人生 > >C#基礎 一(方法詳解)

C#基礎 一(方法詳解)

命名 可選參數 編譯 標記 .com 操作 改變 根據 ref

需要知道:類和方法的關系

技術分享

方法和參數修飾符

自定義方法可以有或沒有參數,也可以有或沒有返回值。可以被各種關鍵字(static、virtual、public、new等)修飾以限制其行為。

                  C#參數修飾符

無 如果一個參數沒有用參數修飾符標記,則認為它將按值傳遞,這意味著被調用的方法收到原始數據的一份副本。

out 輸出參數

被調用的方法賦值因此它按引用傳遞。如果被調用的方法沒有給輸出參數賦值,就會出現編譯器錯誤。

ref 調用者賦初值,並且可以由被調用的方法可以選地重新賦值。如果被調用的方法未能給ref參數賦值,也不會編譯器錯誤。

params 這個參數修飾符允許將一組可變數量的參數作為單獨的邏輯參數進行傳遞。方法只能有一個params修飾符,而且必須是方法的最後一個參數

默認的參數傳遞行為

技術分享

技術分享

技術分享

引用類型:

技術分享

技術分享

技術分享

不管這裏傳遞的是值類型還是引用類型,傳遞之前和之後的值是不會變的。Add()方法裏面操作的是數據的副本,不會影響到數據本身。就像在方法裏面申明了一個參數來接受傳遞的參數,在方法裏面操作的是新申明的參數如不是我們傳遞進去的參數。

Out修飾符

out修飾符叫做輸出參數。定義為帶有輸出參數(通過關鍵字out)的方法有義務在退出這個方法之前,給參數賦一個恰當的值。調用一個帶有輸出參數的方法也需要使用out修飾符。

技術分享

技術分享

規則:

聲明一個變量不賦值(賦值編譯不會錯)

把此變量以Out形式傳到方法裏面

調用方法後此變量就有值

ref修飾符

如果希望方法可以對在調用者作用域中聲明不同數據進行操作(通常改變它的值),例如:排序和交換例程,就需要使用引用參數。

輸出參數不需要在它們被傳遞給方法之前初始化,因為方法在退出之前必修為輸出參數賦值

引用參數必須在它們被傳遞給方法之前初始化

,因為是在傳遞一個對已存在變量的引用。

ref例子:

技術分享

技術分享

規則:

聲明一個變量(初始化)

把參數以ref形式傳遞

方法裏做操作

Params修飾符

C#使用params關鍵字支持參數數組的使用。params關鍵字可以把可變數量的參數(相同類型) 作為單個邏輯參數傳給方法。

技術分享

技術分享

: 為了避免歧義(多重定義),C#要求方法只支持一個params參數,而且必須是參數列表中的最後一個參數

定義可選參數

可選參數就是聲明參數的時候已經賦值了,相同與有個初始值,調用者可以根據需求需不需要改變這個值。

技術分享

技術分享

:可選參數的值是確定的而不是由編譯的時候產生的。可選參數必須放在方法簽名的最後

使用命名參數調用方法

命名參數允許你在調用方法時以任何順序指定參數的值。因此,你可以使用冒號操作符通過名稱來指定 參數

技術分享

技術分享

命名參數配合可選參數使用比較有效果。

方法重載

定義了一組名字相同的方法時,它們的參數數量(或類型)不同,這樣的方法就叫做被重載。

例如:計算兩個數的和,這就相同於一個重載

技術分享

C#基礎 一(方法詳解)