比如说,我有一堂课:
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。一个平凡的现实世界示例正在生成汽车列表,然后被告知这不是车辆列表。
这只是一个小烦恼,但如果有人能对此有所了解,我将不胜感激。