ここでの問題は、それがまたは から派生したクラスT
でなければならないという制約があることです。
さて、具象型でインスタンス化すると、非常に特殊なクラスになります。また、それ自体ではなく、そのサブクラスでインスタンス化した場合、は のサブクラスです。A
A
AList
T
AList
A
T
A
サブクラスによって追加されるすべての情報が失われるため、基本クラスの実行時型を持つインスタンスをそのサブクラスの 1 つに変換することはできません。
例:
public class Animal
{
public int Foo { get; set; }
}
public class Cat : Animal
{
public int Bar { get; set; }
}
Derived d = new Base();
そのコードが機能すると思いますか? Cat
aも aですAnimal
が、 aは a ではないため、そうでAnimal
はありませんCat
。
上記のコードが実際に機能することを期待する場合は、次のコードを実行するとどうなるかを自問してください:d.Bar = 42;
Animal
には の定義が含まれていませんBar
。
あなたのコードでも同じことが起こっています - ゲーム内のジェネリクスで少しだけわかりにくくなっています。