1:value(值傳遞)、ref(引用傳遞)、out(輸出傳遞)
ref和out使用效果上面是等效的,它們的區別在於:參數標記為ref,那么必須在調用函數之前初始化參數的值;參數標記為out,調用函數之前不需要初始化對象,但調用的函數必要在函數返回之前為對象賦值
using System; //value(值傳遞)、ref(引用傳遞)、out(輸出傳遞) public class Test { public static void ValueFun(int i) { i++; } public static void RefFun(ref int j) { j++; } public static void OutFun(out int k) { k = 0;//使用out關鍵字,必須參數初始化 k++; } static void Main() { int i = 0; ValueFun(i);//i的值是實參的一個副本,實參i不會改變 Console.WriteLine(i); int j = 0; RefFun(ref j);//指向同一塊內存,實參j的值會改變 Console.WriteLine(j); int k; OutFun(out k);//和ref關鍵字等效 Console.WriteLine(k); } }
2:params可變參數
params主要的用處是在給函數傳參數的時候用,就是當函數的參數不固定的時候。
在方法聲明中的 params 關鍵字之后不允許任何其他參數,並且在方法聲明中只允許一個 params 關鍵字。
關於參數數組,需掌握以下幾點:
(1)若形參表中含一個參數數組,則該參數數組必須位於形參列表的最后
(2)參數數組必須是一維數組
(3)不允許將params修飾符與ref和out修飾符組合起來使用
(4)與參數數組對應的實參可以是同一類型的數組名,也可以是任意多個與該數組的元素屬於同一類型的變量
(5)若實參是數組則按引用傳遞,若實參是變量或表達式則按值傳遞
(6)用法:可變的方法參數,也稱數組型參數,適合於方法的參數個數不知的情況,用於傳遞大量的數組集合參數;當使用數組參數時,可通過使用params關鍵字在形參表中指定多種方法參數,並在方法的參數表中指定一個數組,形式為:方法修飾符 返回類型 方法名(params 類型[] 變量名)
using System; //可變數量參數 //關鍵字params后面必須是一個數組 public class Test { static int addInt(params int[] values) { int sum = 0; foreach (int i in values) { sum += i; } return sum; } static void Main() { int[] arr = {1,2,3,4,5,6,7,8,9}; Console.WriteLine(addInt(arr)); } }
