オプションのパラメーターと可変長パラメーターを混在させようとしています ( paramsキーワードを使用):
関数宣言は次のとおりです。
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) を省略しても、可変長パラメーター (rest) を使用できるようにするにはどうすればよいですか?
編集: 実際、C# 4.0 への回答、オプションのパラメーターとパラメーターが一緒に機能しない は、複数のオプションのパラメーターの場合にオーバーロードの多くの組み合わせが考えられるため、私を満足させません。