【发布时间】:2013-03-22 02:41:45
【问题描述】:
我有一个 Circle 对象数组(其中 Circle 实现了 IShape 接口,并且我有一个参数为 List<IShape> 的函数......为什么我不能将我的 Circles 数组传递给它?
Visual Studio 给我一个构建错误,说无法将 List<Circle> 转换为 List<IShape>
【问题讨论】:
-
你的意思是你有一个
List<Circle>和一个函数Foo(List<IShape> c)和Circle : IShape?考虑Foo是否有以下行:c.Add(new Square())。 -
这是一个经常被问到的问题。搜索涉及可枚举类型协方差的问题。
-
IEnumerable
就足够了吗?并非所有类型都是协变的。 -
因为不能直接将
List<Circle>转换成List<IShape>,但是应该可以传入myCircles.OfType<IShape>().ToList()
标签: c# collections covariance