是否可以向方法發送可變數量的參數?如何編寫一個可變數量參數的C#方法?
例如,如果我想編寫一個方法,將許多string[]
對象連接成一個字符串,但我希望它能夠接受參數而不知道要傳入多少個數據,我該怎麼做?
是否可以向方法發送可變數量的參數?如何編寫一個可變數量參數的C#方法?
例如,如果我想編寫一個方法,將許多string[]
對象連接成一個字符串,但我希望它能夠接受參數而不知道要傳入多少個數據,我該怎麼做?
你會做這樣的:
string ConcatString(params string[] arguments)
{
// Do work here
}
這可以被稱爲:
string result = ConcatString("Foo", "Bar", "Baz");
對於詳情請參閱params (C# Reference)。
僅供參考 - 已經有一個String.Concat(params object[] args)
- 它將通過調用各的ToString()串連的任何一組對象。所以對於這個具體的例子來說,這可能不是那麼有用。
實際上,無限 - 無(例如,有可用的有限內存量)。
設計時未知,是的。
這是一個典型的例子,它是如何在控制檯應用程序上處理的。
http://msdn.microsoft.com/en-us/library/cb20e19t(VS.71).aspx
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);
是的,你可以使用params爲
你不是指無限的(對這個問題的答案是否定的),但你的意思是「可變的」。這裏是你的答案(是):http://blogs.msdn.com/b/csharpfaq/archive/2004/08/05/209384.aspx
使用params
:
void YourMethod(params string[] infiniteArgs) { }
很容易做到的使用params關鍵字
void ConcatString(params String[] strArray)
{
foreach (String s in strArray)
{
// do whatever you want with all the arguments here...
}
}
您可以輕鬆地創建需要的參數(包括零)的任意數量的方法,使用params
關鍵字:
public static void UseParams(params int[] list)
{
for (int i = 0; i < list.Length; i++)
Console.Write(list[i] + " ");
}
你甚至可以將數組傳遞給此方法而不是參數列表,並且該方法將完全相同。
string MyConcat(params string[] values)
{
var s = new StringBuilder();
foreach (var v in values)
s.Append(v);
return s.ToString();
}
爲什麼不通過IEnumerable? – JohnOpincar 2011-02-14 17:44:33
無限的數據結構需要一段時間才能迭代... – Kurru 2011-02-14 17:46:59