次の静的ジェネリック メソッドを検討してください。
public class Foo
{
public static void Test<T>(T arg)
where T : FrameworkElement
{
}
}
以下のように簡単に呼び出すことができ、T はButton
渡された引数の a であることが暗示されます。
var myButton = new Button();
Foo.Test(myButton);
ただし、次のジェネリック クラスの場合は...
public class Laa<T>
where T : FrameworkElement
{
public Laa(T element)
{
}
}
このコードはコンパイルされません。
var myButton = new Button();
var laa = new Laa(myButton);
代わりに、そのような型を明示的に提供する必要があります。
var myButton = new Button();
var laa = new Laa<Button>(myButton);
提供された引数から暗示されると思いT
ましたが、そうではないようです。
その理由は、クラスがないためだとLaa
思います-クラスは実際にはLaa<Button>
--何を構築すればよいかわかりませんが、それは単なる推測です。
それでも、コンパイラがこれを理解するのに十分な情報がありませんか? クラスはありませんが、提供された引数で満たされるLaa
ジェネリックがあります。Laa<T>