2013-04-02 33 views
10

我有一個函數void Test(int id, params string[] strs)分配串[]數組成一個函數使用參數串[]

我怎麼會傳遞一個字符串數組作爲strs說法?當我打電話:

Test(1, "a, b, c"); 

它以「的STR」作爲一個單一的柱(未陣列)。

+2

如果您當前的代碼不起作用,您會遇到什麼錯誤? – NilsH

+1

你在用什麼語言? – Simon

+0

我正在使用C#。通過將整個數組字符串分配給params字符串[],我已經解決了這個問題。 –

回答

7

我測試了這一點,它的工作原理:

private void CallTestMethod() 
    { 
     string [] strings = new string [] {"1", "2", "3"}; 
     Test(1, strings); 

    } 

    private void Test(int id, params string[] test) 
    { 
     //Do some action with input 
    } 

你可以調用它,就像這個Test(1, <Some string[]>);

編輯

MSDN website on params

的params關鍵字允許你指定一個方法參數呃,需要一個 可變數量的參數。您可以發送一個逗號分隔的參數聲明中指定的類型,或者 數組的指定類型的參數的 參數列表。您還可以發送不 參數。在方法聲明中的參數 關鍵字之後不允許有其他參數,並且在方法聲明中只允許使用一個參數params關鍵字 。

所以,你也可以調用Test方法這樣Test(1);沒有編譯器錯誤。

24

其實,在params僅僅是由C#編譯器處理的語法糖,讓

這樣的:

void Method(params string[] args) { /**/ } 
Method("one", "two", "three"); 

變成這樣:

void Method(params string[] args) { /**/ } 
Method(new string[] { "one", "two", "three" }) 
1

試試這個。

var myStringArray = new string[] {"a", "b", "c"}; 
Test(myStringArray) 
相關問題