用无限参数创build方法?

在C#中,你可以这样做:

foo = string.Format("{0} {1} {2} {3} ...", "aa", "bb", "cc" ...); 

这个方法Format()接受无限的参数,是第一个如何格式化string,其余的是要放入string的值。

今天我遇到了一个情况:我必须得到一组string并testing它们,然后我记得这个语言的function,但是我没有任何线索。 经过几次不成功的网页search之后,我意识到只要获得一个数组,这样做并不令我满意。

问:我如何制作一个接受无限参数的函数? 我该如何使用它?

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必须总是最后一个(每个函数只能有一个)。 而且,你可以通过两种方式调用一个带params参数的函数。 第一种方法在MyFunction的第一行中进行说明,其中每个数字都作为单个参数添加。 但是,也可以使用SumThemAllAndPrintInString中所示的数组调用SumThemAll ,它使用int[]调用的numbers调用SumThemAll

使用params关键字。 用法:

 public void DoSomething(int someValue, params string[] values) { foreach (string value in values) Console.WriteLine(value); } 

使用params关键字的参数总是在最后。

几个笔记。

参数需要在数组types上标记,如string []或object []。

标记为w / params的参数必须是方法的最后一个参数。 例如,Foo(string input1,object [] items)。

使用params关键字。 例如

 static void Main(params string[] args) { foreach (string arg in args) { Console.WriteLine(arg); } } 

你可以通过使用params关键字来实现这一点。

小例子:

 public void AddItems(params string[] items) { foreach (string item in items) { // Do Your Magic } } 
  public static void TestStrings(params string[] stringsList) { foreach (string s in stringsList){ } // your logic here } 
  public string Format(params string[] value) { // implementation } 

使用params关键字

 function void MyFunction(string format, params object[] parameters) { } 

对象[Instad]你可以使用任何你喜欢的types。 参数论证总是必须是最后一项。