用无限参数创建方法?

时间:2010-03-12 20:44:36

标签: c# .net function overloading

在C#中你可以这样做:

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

此方法Format()接受无限参数,第一个是如何格式化字符串,其余是要放在字符串中的值。

今天我遇到了一种情况,我必须得到一组字符串并测试它们,然后我记得这种语言功能,但我不知道。在几次不成功的网络搜索之后,我意识到获得一个阵列会更加谨慎,这并不能让我非常满意。

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

8 个答案:

答案 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参数总是必须是最后一行。