私はこのテストコードを持っています:
void func1(string a, params string[] p)
{
func1(a, true, p);
}
void func1(string a, bool b, params string[] p)
{
//...
}
void func2(string a, bool b = true, params string[] p)
{
//...
}
void exec()
{
func1("a", "p1", "p2");
func2("a", "p1", "p2");
}
func1
とfunc2
等しいですか?
を作成してもエラーは発生しませんが、execで(オプションの値を使用して)同様func2
のものを使用しようとすると、コンパイラはエラーを表示します。func2
This function has some invalid arguments
APIのようにこの関数を使用する人にとっては同じだfunc1
と思います。func2
このコードの何が問題になっていますか?オプションの値とparams値を持つ関数にこのアプローチを使用できますか?