是否可以向方法发送可变数量的参数?
例如,如果我想编写一个将多个string[]
对象连接成一个字符串的方法,但是我希望它能够接受参数而不知道我想要传递多少个,我该怎么办?这样做?
答案 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)
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://msdn.microsoft.com/en-us/library/cb20e19t(VS.71).aspx