このようなクラスがある場合: -
static class Foo {
public static void Bar<T>(T item) { Console.WriteLine(item.ToString(); }
}
この例では、すべてのタイプに ToString() があるなどの理由で T を使用する必要がないことはわかっています。これは単なる不自然な例です。私がもっと興味を持っているのは、次の観点からボンネットの下で何が起こるかです: -
Foo.Bar("Hello");
Foo.Bar(123);
Foo.Bar(new Employee("Isaac"));
私は広く(考えてください!)具体化を理解しています。つまり、さまざまなタイプのジェネリッククラスを作成する場合などです。
List<Int32>
List<String>
List<Employee>
など。その後、コンパイル時 (または実行時?) に、指定されたジェネリック引数ごとに 1 つずつ、3 つの実際の具象型になります。最初の例のメソッド呼び出しにも同じことが当てはまりますか。つまり、単一のクラス Foo があり、具体化された 3 つの Bar メソッド (1 つは String、Int32、および Employee) でしょうか?