如何编写一个带有可变数量参数的C#方法?

时间:2011-02-14 17:40:52

标签: c#

是否可以向方法发送可变数量的参数?

例如,如果我想编写一个将多个string[]对象连接成一个字符串的方法,但是我希望它能够接受参数而不知道我想要传递多少个,我该怎么办?这样做?

9 个答案:

答案 0 :(得分:19)

您可以这样做:

string ConcatString(params string[] arguments)
{
   // Do work here
}

这可以称为:

string result = ConcatString("Foo", "Bar", "Baz");

有关详细信息,请参阅params (C# Reference)


仅供参考 - 已经存在String.Concat(params object[] args) - 它将通过在每个对象上调用ToString()来连接任何对象集。所以对于这个具体的例子,这可能不是那么有用。

答案 1 :(得分:5)

Use the params keyword这样做:

public static string ConvertToOneString(params string[] list) 
{

    string result = String.Empty;
    for ( int i = 0 ; i < list.Length ; i++ )
    {
        result += list[i];
    }
    return result;
}

用法:

string s = "hello"
string a = "world"
string result = ConvertToOneString(s, a);

答案 2 :(得分:4)

您可以使用params关键字轻松创建一个采用任意数量参数(包括零)的方法:

public static void UseParams(params int[] list)
{
    for (int i = 0; i < list.Length; i++)
        Console.Write(list[i] + " ");
}

您甚至可以将数组传递给此方法而不是参数列表,并且该方法将完全相同。

答案 3 :(得分:3)

使用params关键字

非常容易
void ConcatString(params String[] strArray)
{ 
    foreach (String s in strArray)
    {
        // do whatever you want with all the arguments here...
    }
}

答案 4 :(得分:2)

是的,您可以使用params作为

答案 5 :(得分:2)

使用params

void YourMethod(params string[] infiniteArgs) { }

答案 6 :(得分:2)

string MyConcat(params string[] values)
{
    var s = new StringBuilder();
    foreach (var v in values)
       s.Append(v);
    return s.ToString();
}

答案 7 :(得分:1)

你不是指无限(这个问题的答案是否定的),但你的意思是'变量'。这是你的回答(是):http://blogs.msdn.com/b/csharpfaq/archive/2004/08/05/209384.aspx

答案 8 :(得分:0)

在实践中,无限 - 不(例如,有可用的有限内存)。

在设计时未知,是的。

这方面的经典示例是如何在控制台应用程序上处理它。

http://dotnetperls.com/main

http://msdn.microsoft.com/en-us/library/cb20e19t(VS.71).aspx