params 關鍵字可以指定採用數目可變的參數的方法參數。
可以發送參數聲明中所指定類型的逗號分隔的參數列表或指定類型的參數數組。還可以不發送參數。
在方法聲明中的params 關鍵字之後不允許任何其他參數,並且在方法聲明中只允許一個params 關鍵字。
下面的示例演示可向params 參數發送參數的各種方法
public class MyClass
{
public static void UseParams(params int[] list)
{
for (int i = 0; i < list.Length; i++)
{
Console.Write(list[i] + " ");
}
Console.WriteLine();
}
public static void UseParams2(params object[] list)
{
for (int i = 0; i < list.Length; i++)
{
Console.Write(list[i] + " ");
}
Console.WriteLine();
}
static void Main()
{
// 你可以給方法傳遞一個以英文逗號分割開的多個參數
UseParams(1, 2, 3, 4);
UseParams2(1, 'a', "test");
// 即使不傳遞一個參數也沒問題
// 以下代碼只會輸出一個空行
UseParams2();
// 你也可以給方法傳遞一個數組
// 當然你類型需要匹配纔行
int[] myIntArray = { 5, 6, 7, 8, 9 };
UseParams(myIntArray);
object[] myObjArray = { 2, 'b', "test", "again" };
UseParams2(myObjArray);
// 下面註釋的代碼會產生一個編譯錯誤
// 原因是objcet數組不能被轉換爲 int 類型的數組
//UseParams(myObjArray);
// 下面的方法不會報錯
// 但是會把整個 int 類型的數組 當作一個參數來處理(整型數組也繼承object)
UseParams2(myIntArray);
}
}
/*
輸出結果:
1 2 3 4
1 a test
5 6 7 8 9
2 b test again
System.Int32[]
*/
參考:MSDN