我有一個函數void Test(int id, params string[] strs)
。分配串[]數組成一個函數使用參數串[]
我怎麼會傳遞一個字符串數組作爲strs
說法?當我打電話:
Test(1, "a, b, c");
它以「的STR」作爲一個單一的柱(未陣列)。
我有一個函數void Test(int id, params string[] strs)
。分配串[]數組成一個函數使用參數串[]
我怎麼會傳遞一個字符串數組作爲strs
說法?當我打電話:
Test(1, "a, b, c");
它以「的STR」作爲一個單一的柱(未陣列)。
我測試了這一點,它的工作原理:
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[]>);
編輯
的params關鍵字允許你指定一個方法參數呃,需要一個 可變數量的參數。您可以發送一個逗號分隔的參數聲明中指定的類型,或者 數組的指定類型的參數的 參數列表。您還可以發送不 參數。在方法聲明中的參數 關鍵字之後不允許有其他參數,並且在方法聲明中只允許使用一個參數params關鍵字 。
所以,你也可以調用Test
方法這樣Test(1);
沒有編譯器錯誤。
其實,在params
僅僅是由C#編譯器處理的語法糖,讓
這樣的:
void Method(params string[] args) { /**/ }
Method("one", "two", "three");
變成這樣:
void Method(params string[] args) { /**/ }
Method(new string[] { "one", "two", "three" })
試試這個。
var myStringArray = new string[] {"a", "b", "c"};
Test(myStringArray)
如果您當前的代碼不起作用,您會遇到什麼錯誤? – NilsH
你在用什麼語言? – Simon
我正在使用C#。通過將整個數組字符串分配給params字符串[],我已經解決了這個問題。 –