[英]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.