.NET2.0
尽管搜索了谷歌和 SO,我似乎无法找到如何做到这一点。
假设我有以下课程:
public class Fruit {
prop string Color {get; set;}
}
public class Apple : Fruit {
public Apple() {
this.Color = "Red";
}
}
public class Grape: Fruit {
public Grape() {
this.Color = "Green";
}
}
现在我想这样做:
public List<Fruit> GetFruit() {
List<Fruit> list = new List<Fruit>();
// .. populate list ..
return list;
}
List<Grape> grapes = GetFruit();
但我当然明白了Cannot implicitly convert type Fruit to Grape
。
我意识到这是因为如果我这样做了,我真的会把事情搞砸:
List<Grape> list = new List<Grape>();
list.add(new Apple());
因为虽然两者都是Fruit
,但 anApple
不是Grape
。所以这是有道理的。
但我不明白为什么我不能这样做:
List<Fruit> list = new List<Fruit>();
list.add(new Apple());
list.add(new Grape());
至少,我需要能够:
List<Fruit> list = new List<Fruit>();
list.add(new Apple()); // will always be Apple
list.add(new Apple()); // will always be Apple
list.add(new Apple()); // will always be Apple
关于如何做到这一点的任何想法.NET2
?
谢谢
编辑
对不起,我弄错了。我实际上可以这样做:
List<Fruit> list = new List<Fruit>();
list.add(new Apple());
list.add(new Grape());
并且成功.FindAll
了.Convert
。