简述
我们在方法中传递参数经常会用到params方法,本文介绍它的使用及注意事项。
params方法提供参数个数可变的能力,也就是参数的个数可以动态变化。.
在使用上只支持一维数组。在同一个方法中只支持使用一次,并且它之后不能再有参数,否则报错。
使用语法如下:
public void FunName(params object[] paramname){}
在使用params调用参数时,可以传入的参数有:
1、数组元素类型的参数的逗号分隔列表。
2、指定类型的参数的数组。
3、无参数。如果未发送任何参数,则 params 列表的长度为零。
使用案例
下面的示例演示可向params形参发送实参的各种方法,相当的简单。
public static 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();
}
public static void Main(string[] arg)
{
//你可以传入以逗号分割参数,二是可特殊参数,三是参数可以为空
MyClass.UseParams(1, 2, 3, 4);
MyClass.UseParams2(1, 'a', ".net开发跳槽");
MyClass.UseParams2();
//使用数组参数
int[] myIntArray = { 5, 6, 7, 8, 9 };
MyClass.UseParams(myIntArray);
//使用object类型可以传递任意参数,
//但是接收参数时需要特殊处理,否则会报错
object[] myObjArray = { 2, 'b', "test", ".net开发跳槽" };
MyClass.UseParams2(myObjArray);
}
}
//输出:
//1 2 3 4
//1 a .net开发跳槽
//5 6 7 8 9
//2 b test .net开发跳槽
避坑:重载方法如果参数个数相同,使用params时,如果一个类型是object,另外一个是其他类型,不传params时会产生二义性的错误,编译器分不清具体使用那个方法,两个方法从参数角度上都可以使用。
public static void Testfun(string a, params object[] list)
{
}
public static void Testfun(string a, params int[] list)
{
}
//调用
Testfun("dotnet开发跳槽");//这样会报错
Testfun("dotnet开发跳槽",1,2);//这样正常
结语
本文介绍了c#中params参数的使用,本代码已经成功运行,大家可以直接拷贝代码测试。 希望本文对大家学习和工作有一定参考价值,同时欢迎大家留言讨论,谢谢大家的支持。