たとえば、次のクラスがあるとします。
public class MyFoo : IMyBar
{
...
}
次に、次のコードを使用したいと思います。
List<MyFoo> classList = new List<MyFoo>();
classList.Add(new MyFoo(1));
classList.Add(new MyFoo(2));
classList.Add(new MyFoo(3));
List<IMyBar> interfaceList = new List<IMyBar>(classList);
しかし、これはエラーを生成します:
`Argument '1': cannot convert from 'IEnumerable<MyFoo>' to 'IEnumerable<IMyBar>'
どうしてこれなの?MyFoo は IMyBar を実装しているため、MyFoo の IEnumerable を IMyBar の IEnumerable として扱うことができると考えられます。ありふれた現実世界の例として、車のリストを作成した後、それは車のリストではないと言われたことがあります。
それはほんの些細な迷惑ですが、誰かがこれに光を当てることができれば、私は大いに義務付けられます.