繁体   English   中英

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

[英]How do I write a C# method that takes a variable number of arguments?

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

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

你会这样做:

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

这可以称为:

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

有关详细信息,请参阅参数(C#参考)


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

使用params关键字来做到这一点:

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);

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

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

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

使用params关键字很容易做到这一点

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

是的,你可以使用参数

使用params

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

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

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

在设计时未知,是的。

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

http://dotnetperls.com/main

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM