C#中params方法参数的用法与避坑

简述

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