如果在為方法宣告引數時未使用 ref 或 out,則該引數可以具有關聯的值。可以在方法中更改該值,但當控制傳遞**用過程時,不會保留更改的值。通過使用方法引數關鍵字,可以更改這種行為。
params
params
params
params
示例:字面意思比較難懂,所以看示例很有用。
1//keywords_params.cs23
using system;45
class613
}1415static
void
main()16;
19useparams(arr);
2021
//而使用了params修飾方法引數後,我們可以直接使用一組物件作為引數
22//
當然這組引數需要符合呼叫的方法對引數的要求
23useparams(
100, 'a
', "keywords");
2425
console.read();26}
27}
ref
refref
傳遞到 ref 引數的引數必須最先初始化。這與 out 不同,out 的引數在傳遞之前不需要顯式初始化。
屬性不是變數,因此不能作為 ref 引數傳遞。
儘管 ref 和 out 在執行時的處理方式不同,但它們在編譯時的處理方式是相同的。因此,如果乙個方法採用 ref 引數,而另乙個方法採用 out 引數,則無法過載這兩個方法。例如,從編譯的角度來看,以下**中的兩個方法是完全相同的。如果嘗試這麼做,將導致不能編譯該**。
如果乙個方法採用 ref 或 out 引數,而另乙個方法不採用這兩類引數,則可以進行過載。
示例:按引用傳遞值型別是有用的,但是 ref 對於傳遞引用型別也是很有用的。這允許被呼叫的方法修改該引用所引用的物件,因為引用本身是按引用來傳遞的。
1//keywords_ref.cs23
using system;45
class6"
, i);11}
1213
static
void
main()14"
, i);
1920
useref(ref i);
2122
//檢視呼叫方法之後的值
23console.writeline(
"after the method calling: i =
", i);
24console.read();25}
26}2728
/**//*
29控制台輸出:
30before the method calling : i = 10
31i = 110
32after the method calling: i = 110
33*/
out
關鍵字會導致引數通過引用來傳遞。這與 ref 關鍵字類似。
與 ref 的不同之處:
ref 要求變數必須在傳遞之前進行初始化。
儘管作為 out 引數傳遞的變數不需要在傳遞之前進行初始化,但需要呼叫方法以便在方法返回之前賦值。
示例:與 ref 示例不同的地方只要將 ref 改為 out,然後變數 i 僅需要宣告即可。
1static
void
main()
2
C 關鍵字 方法引數
printed from microsoft.docs 使用params關鍵字可以指定採用數目可變的引數的方法引數。可以傳送引數宣告中所指定型別的逗號分隔的引數列表或指定型別的引數陣列。還可以不傳送引數。如果未傳送任何引數,則params列表的長度為零。在方法宣告中的params關鍵字之後不允許有任...
非關鍵字引數和關鍵字引數 args kw
這兩個引數的存在是方便在呼叫函式的時候可以靈活的傳參 def count numbers sum 0 for n in numbers sum sum n n return sum count 1,2,3 14 count 1,3,5,7 84如果已經有乙個list或者tuple,要呼叫乙個可變引數...
Python中關鍵字引數和命名關鍵字引數的區別
python中函式的引數有位置引數 預設引數 可變引數 命名關鍵字引數和關鍵字引數,這個順序也是定義函式時的必須順序。本文主要是講講命名關鍵字引數和關鍵字引數的區別 可變引數允許你傳入0個或任意個引數,這些可變引數在函式呼叫時自動組裝為乙個tuple。而關鍵字引數允許你傳入0個或任意個含引數名的引數...