C# 参数数组
有时,当声明一个方法时,您不能确定要传递给函数作为参数的参数数目。C# 参数数组解决了这个问题,参数数组通常用于传递未知数量的参数给函数。
params 关键字
在使用数组作为形参时,C# 提供了 params 关键字,使调用数组为形参的方法时,既可以传递数组实参,也可以传递一组数组元素。params 的使用格式为:
public 返回类型 方法名称( params 类型名称[] 数组名称 )
实例
下面的实例演示了如何使用参数数组:
实例
using System;
namespace ArrayApplication
{
class ParamArray
{
public int AddElements(params int[] arr)
{
int sum = 0;
foreach (int i in arr)
{
sum += i;
}
return sum;
}
}
class TestClass
{
static void Main(string[] args)
{
ParamArray app = new ParamArray();
int sum = app.AddElements(512, 720, 250, 567, 889);
Console.WriteLine("总和是: {0}", sum);
Console.ReadKey();
}
}
}
namespace ArrayApplication
{
class ParamArray
{
public int AddElements(params int[] arr)
{
int sum = 0;
foreach (int i in arr)
{
sum += i;
}
return sum;
}
}
class TestClass
{
static void Main(string[] args)
{
ParamArray app = new ParamArray();
int sum = app.AddElements(512, 720, 250, 567, 889);
Console.WriteLine("总和是: {0}", sum);
Console.ReadKey();
}
}
}
当上面的代码被编译和执行时,它会产生下列结果:
总和是: 2938
C# 数组
微软MSDN参考
109***4700@qq.com
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', "Apple"); UseParams2(); //不填入参数 int[] myIntArray = {5, 6, 7, 8, 9, }; UseParams(myIntArray); object[] myObjArray = { 1, 'b', "boom", "app" }; UseParams2(myObjArray); UseParams2(myIntArray); //输出为"System.Int32[]" } }//end of MyClass运行结果:
微软MSDN参考
109***4700@qq.com
GPF
570***806@qq.com
参考地址
params 用法补充:
using System; namespace MyParams { class MyParams { static void Test(int a, int b) { Console.WriteLine("a + b = {0}", a + b); } static void Test(params int[] list) { foreach(int i in list) { Console.Write("{0} ", i); } } static void Main(string[] args) { Test(1, 2); Test(1, 2, 3, 4, 5); Console.ReadLine(); } } }运行结果:
GPF
570***806@qq.com
参考地址
vinda
ohv***a@yeah.net
我们通常的入口函数 static void Main(string [] args) 就是用数组来作形参的,它实际可以写成 static void Main(),不需要参数的传入。同样使用数组作为形参,调用普通方法函数时,有无params是有区别的:
测试如下:(带params和不带params的方法只能存在一个,不能仅凭params来重载一个方法,故注释掉了一个,再测试时注释掉另一个。)
using System; namespace mypro { class myclass1 { static void test(int a, int b) { Console.WriteLine("a+b= {0}", a + b); } /* static void test(int[] list) { foreach(int i in list) { Console.Write("-{0}",i); } }*/ static void test(params int[] list) { foreach (int i in list) { Console.Write("+{0}", i); } } static void Main() { test(1, 2); int[] a = new int[] { 1, 2, 3, 4, 5 }; test(a); test(1, 23, 4, 5, 6); Console.ReadKey(); } } }vinda
ohv***a@yeah.net