[英]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关键字很容易做到这一点
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://msdn.microsoft.com/en-us/library/cb20e19t(VS.71).aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.