我試圖混合可選參數和可變長度參數關鍵字(使用PARAMS關鍵字):混合可選參數,而params在c#
這裏的函數聲明:
void foo(int req, string opt = "empty", params object[] rest) {}
這裏是調用該函數:
foo(1);
foo(1, "something");
foo(1, "something", 2, 3);
foo(1, 2, 3);
最後一次調用不編譯,因爲參數在省略操作後提供參數。 (至少我認爲這就是爲什麼它不起作用)
如何省略可選參數(opt)並仍然能夠使用可變長度參數(休息)?
編輯:實際上,對C# 4.0, optional parameters and params do not work together的回答不滿足我,因爲在多個可選參數的情況下可能有多種重載組合。
組合這兩種技術的IMO只是讓它比單獨的重載'foo()'方法更容易混淆。 – 2013-02-27 14:48:36
@CAbbott確實如此。我沒有足夠的搜索。 – seb 2013-02-27 15:04:01
您可以儘可能多地編輯它。沒有辦法做到這一點乾淨。我給複本的答案是,這個問題是一個重複的問題,正在尋求一個不同的答案,遠不是最佳的語法,我也沒有聲稱它是。答案是作爲一個可能的工作。 – CodeMonkeyKing 2014-06-06 06:59:27