简述
我们在方法中传递参数经常会用到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参数的使用,本代码已经成功运行,大家可以直接拷贝代码测试。 希望本文对大家学习和工作有一定参考价值,同时欢迎大家留言讨论,谢谢大家的支持。