一、什么是参数数组(params)
参数数组(params)关键字用于指定一个方法参数,该参数可以接收可变数目的实参。使用params修饰的参数必须是数组类型,调用方法时既可以逐个传入同类型的值,也可以直接传入一个数组。
在方法声明中,params关键字之后不允许再出现其他参数,并且一个方法声明中只允许出现一个params关键字。
二、基本语法
先定义一个带有参数数组的方法:
public void UseParams(params int[] list) { for (int i = 0; i < list.Length; i++) { Console.Write(list[i] + " "); } Console.WriteLine(); }该方法可以通过以下两种方式调用:
- 直接传入若干个
int值:UseParams(1, 2, 3); - 传入一个
int数组:
int[] myarray = new int[3] { 10, 11, 12 }; UseParams(myarray);三、完整示例
下面的示例演示了params int[]与params object[]两种参数数组的用法:
using System; public class MyClass { public static void UseParams(params int[] list) { for (int i = 0; i < list.Length; i++) { Console.WriteLine(list[i]); } Console.WriteLine(); } public static void UseParams2(params object[] list) { for (int i = 0; i < list.Length; i++) { Console.WriteLine(list[i]); } Console.WriteLine(); } static void Main() { UseParams(1, 2, 3); UseParams2(1, 'a', "test"); // 只要数组类型与方法参数类型匹配,也可以直接传入数组 int[] myarray = new int[3] { 10, 11, 12 }; UseParams(myarray); } }四、运行结果
调用UseParams(1, 2, 3);输出:
1 2 3调用UseParams2(1, 'a', "test");输出:
1 a test调用UseParams(myarray);输出:
10 11 12五、使用注意事项
params参数必须是方法参数列表中的最后一个参数。params参数的类型必须是一维数组。- 调用时如果传入数组,数组类型必须与方法声明的参数数组类型一致。
- 不传任何实参时,
params参数会接收一个长度为 0 的数组,使用时需注意空数组的处理。