要接受未知数目的参数可以使用关键字params该关键字用于参数列表中声明参数列表最后面的值params关键字与数组一起使用
当值被传递给方法时编译器首先查看是否有匹配的方法如果有则调用该方法如果没有编译器将查看是否有包含参数params的方法如果找到这样的方法则使用它编译器将这些值放到一个数组中并将该数组传递给方法
下面两个实例
实例一使用未知数目的参数
实例二使用params来指定多种数据类型
实例一代码
using System;
using SystemCollectionsGeneric;
using SystemLinq;
using SystemText;
namespace ConsoleAppTest
{
public class AddEm {
public static long Add(params int[] args) {
int ctr = ;
long Total = ;
for (ctr = ; ctr < argsLength; ctr++) {
Total += args[ctr];
}
return Total;
}
}
class Program
{
static void Main(string[] args)
{
long Total = ;
Total = AddEmAdd();
ConsoleWriteLine(Total={}Total);
Total = AddEmAdd();
ConsoleWriteLine(Total={} Total);
Total = AddEmAdd();
ConsoleWriteLine(Total={} Total);
Total = AddEmAdd();
ConsoleWriteLine(Total={} Total);
ConsoleRead();
}
}
}
实例二代码
using System;
using SystemCollectionsGeneric;
using SystemLinq;
using SystemText;
namespace ConsoleAppTest
{
public class Garbage {
public static void Print(params object[] args) {
int ctr = ;
for (ctr = ; ctr < argsLength; ctr++) {
ConsoleWriteLine(Argument {} is:{}ctrargs[ctr]);
}
}
}
class Program
{
static void Main(string[] args)
{
long ALong = L;
decimal ADec = M;
byte Abyte = ;
string AString = Cole McCrary;
ConsoleWriteLine(First call);
GarbagePrint();
ConsoleWriteLine(\nSecond call);
GarbagePrint();
ConsoleWriteLine(\nThird call);
GarbagePrint(ALongADecAbyteAString);
ConsoleWriteLine(\nFourth call);
GarbagePrint(AStringis cool!);
ConsoleRead();
}
}
}