簡単に言うと、なぜこのコードはコンパイルに失敗するのでしょうか?
public interface IWorld { }
public class Foo<T> where T : IWorld { }
public void Hello<T>(T t) where T : IWorld
{
Foo<IWorld> bar1 = new Foo<T>(); //fails implicit cast
Foo<IWorld> bar2 = (Foo<IWorld>)new Foo<T>(); //fails explicit cast
}
すべてが をT
実装するためIWorld
、 のすべてのインスタンスがFoo<T>
一致する必要がありますFoo<IWorld>
。なぜだめですか?これを回避する方法はありますか?これを達成するためにジェネリックに頼りたくありません。