0

次の呼び出しがあいまいなのはなぜですか。

public class Foo
{
    public void Bar<T> (Action<T> simple);
    public void Bar<T1, T2> (Action<T1, T2> complex);
}

...

public class Test
{
    public static void MyComplex (string a, string b) { ... }
}

...

foo.Bar(Test.MyComplex);

メソッドを呼び出すことはコンパイラにとって明確であるべきではありませんBar<T1,T2>()か?

4

2 に答える 2

1

このメソッドを削除するpublic void Bar<T> (Action<T> simple);と、次の例外が発生するため、コードはコンパイルされません。

メソッド 'Foo.Bar(System.Action)' の型引数は、使用法から推測できません。型引数を明示的に指定してみてください。

残念ながら、コンパイラはこのメソッドから型を取得できないため、次のコードを記述してメソッドを呼び出す必要があります。

new Foo().Bar(new Action<string, string>(Test.MyComplex));
于 2013-09-21T09:16:23.510 に答える