2011-02-14 89 views
12

是否可以向方法發送可變數量的參數?如何編寫一個可變數量參數的C#方法?

例如,如果我想編寫一個方法,將許多string[]對象連接成一個字符串,但我希望它能夠接受參數而不知道要傳入多少個數據,我該怎麼做?

+0

爲什麼不通過IEnumerable? – JohnOpincar 2011-02-14 17:44:33

+0

無限的數據結構需要一段時間才能迭代... – Kurru 2011-02-14 17:46:59

回答

19

你會做這樣的:

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

這可以被稱爲:

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

對於詳情請參閱params (C# Reference)


僅供參考 - 已經有一個String.Concat(params object[] args) - 它將通過調用各的ToString()串連的任何一組對象。所以對於這個具體的例子來說,這可能不是那麼有用。

5

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

是的,你可以使用params

2

使用params

void YourMethod(params string[] infiniteArgs) { } 
3

很容易做到的使用params關鍵字

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

您可以輕鬆地創建需要的參數(包括零)的任意數量的方法,使用params關鍵字:

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

你甚至可以將數組傳遞給此方法而不是參數列表,並且該方法將完全相同。

2
string MyConcat(params string[] values) 
{ 
    var s = new StringBuilder(); 
    foreach (var v in values) 
     s.Append(v); 
    return s.ToString(); 
} 
相關問題