C#方差问题:将列表<派生>赋值为列表<base>查看下面的示例(部分摘自MSDN博客):class Animal { }class Giraffe : Animal { }static void Main(string[] args){
// Array assignment works, but...
Animal[] animals = new Giraffe[10];
// implicit...
List<Animal> animalsList = new List<Giraffe>();
// ...and explicit casting fails
List<Animal> animalsList2 = (List<Animal>) new List<Giraffe>();}这是协方差问题吗?这在未来的C#发行版中会得到支持吗?是否有任何聪明的解决办法(只使用.NET 2.0)?
3 回答
料青山看我应如是
TA贡献1772条经验 获得超8个赞
IEnumerable<T>
IEnumerable<Animal> animals = new List<Giraffe>();
List<T>
List<Animal> animals = new List<Giraffe>();animals.Add(new Monkey());
慕侠2389804
TA贡献1719条经验 获得超6个赞
List<T>
IEnumerable<T>
IEnumerable<out T>
// implicit castingIEnumerable<Animal> animalsList = new List<Giraffe>(); // explicit castingIEnumerable<Animal> animalsList2 = (IEnumerable<Animal>) new List<Giraffe>();
IList<T>
- 3 回答
- 0 关注
- 580 浏览
添加回答
举报
0/150
提交
取消