在C#中你可以这样做:
foo = string.Format("{0} {1} {2} {3} ...", "aa", "bb", "cc" ...);
此方法Format()
接受无限参数,第一个是如何格式化字符串,其余是要放在字符串中的值。
今天我遇到了一种情况,我必须得到一组字符串并测试它们,然后我记得这种语言功能,但我不知道。在几次不成功的网络搜索之后,我意识到获得一个阵列会更加谨慎,这并不能让我非常满意。
问:如何制作接受无限参数的函数?我该如何使用它?
答案 0 :(得分:88)
使用params
关键字。
以下是一个例子:
public int SumThemAll(params int[] numbers)
{
return numbers.Sum();
}
public void SumThemAllAndPrintInString(string s, params int[] numbers)
{
Console.WriteLine(string.Format(s, SumThemAll(numbers)));
}
public void MyFunction()
{
int result = SumThemAll(2, 3, 4, 42);
SumThemAllAndPrintInString("The result is: {0}", 1, 2, 3);
}
代码显示了各种各样的事情。首先,params
关键字的参数必须始终为最后一个(并且每个函数只能有一个)。此外,您可以通过两种方式调用带有params
参数的函数。第一种方法在MyFunction
的第一行中说明,其中每个数字作为单个参数添加。但是,也可以使用数组调用它,如SumThemAllAndPrintInString
中所示,该SumThemAll
使用名为int[]
的{{1}}调用numbers
。
答案 1 :(得分:19)
使用params关键字。用法:
public void DoSomething(int someValue, params string[] values)
{
foreach (string value in values)
Console.WriteLine(value);
}
使用params关键字的参数总是在最后。
答案 2 :(得分:6)
一些注释。
Params需要在数组类型上标记,如string []或object []。
标记为w / params的参数必须是您方法的最后一个参数。例如,Foo(字符串input1,object []项目)。
答案 3 :(得分:3)
使用params
关键字。例如
static void Main(params string[] args)
{
foreach (string arg in args)
{
Console.WriteLine(arg);
}
}
答案 4 :(得分:3)
您可以使用params关键字来实现此目的。
小例子:
public void AddItems(params string[] items)
{
foreach (string item in items)
{
// Do Your Magic
}
}
答案 5 :(得分:3)
public static void TestStrings(params string[] stringsList)
{
foreach (string s in stringsList){ }
// your logic here
}
答案 6 :(得分:1)
public string Format(params string[] value)
{
// implementation
}
使用params关键字
答案 7 :(得分:1)
function void MyFunction(string format, params object[] parameters) {
}
您可以使用任何类型的对象而不是对象[]。 params参数总是必须是最后一行。