標籤:錯誤 作用 具名引數 ams png 規則 因此 按值傳遞 初始化
需要知道:類和方法的關係
方法和參數修飾符
自訂方法可以有或沒有參數,也可以有或沒有傳回值。可以被各種關鍵字(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#基礎 一(方法詳解)