私はこれを持っています:
public IClub GetTeam()
{
return new Arsenal();
}
//compiles since Arsenal is an IClub
public T GetTeam<T>() where T : IClub, new()
{
return new Arsenal();
}
//wouldn't compile saying "cannot convert Arsenal to T"
しかし、これらのことはうまくいきます:
public T GetTeam<T>() where T : IClub, new()
{
T t = new T();
t.Sponsor = "Nike"; //since it knows T is IClub,
return new T(); //but why the injustice to return type alone?
}
戻り値の型が とにかく であるにもかかわらず、2 番目のコード ブロックがコンパイルされないのはなぜ
IClub
ですか? それは不公平ではありませんか?上記のコードで型制約の可能性を十分に活用していないことはわかっていますが、コードを実行するための代替手段は何ですか?