用无限参数创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。 参数论证总是必须是最后一项。