本人初学C#,看入门经典第四版泛型那一章,里面有段代码
Farm<Animal> farm = new Farm<Animal>();
farm.Animals.Add(new Cow("Jack"));
farm.Animals.Add(new Chicken("Vera"));
farm.Animals.Add(new Chicken("Sally"));
farm.Animals.Add(new SuperCow("Kevin"));
farm.MakeNoises(); Farm<Cow> dairyFarm = farm.GetCows();
dairyFarm.FeedTheAnimals(); foreach (Cow cow in dairyFarm)
{
if (cow is SuperCow)
{
(cow as SuperCow).Fly();
}
}
这个Farm<T>是自定义的泛型类,里面有个方法GetCows()返回的也是泛型类的实例(T为Cow的)
这里有个疑问就是farm如果之后还增加一个,如farm.Animals.Add(new Cow("Test"))的话,
这个dairyFarm是否会随之变化,自己测试了下,没有变化
不太清楚这个泛型类是不是引用类型,如果是的话,为什么这个dairyFarm没跟着变化
求达人解答,谢谢
Farm<Animal> farm = new Farm<Animal>();
farm.Animals.Add(new Cow("Jack"));
farm.Animals.Add(new Chicken("Vera"));
farm.Animals.Add(new Chicken("Sally"));
farm.Animals.Add(new SuperCow("Kevin"));
farm.MakeNoises(); Farm<Cow> dairyFarm = farm.GetCows();
dairyFarm.FeedTheAnimals(); foreach (Cow cow in dairyFarm)
{
if (cow is SuperCow)
{
(cow as SuperCow).Fly();
}
}
这个Farm<T>是自定义的泛型类,里面有个方法GetCows()返回的也是泛型类的实例(T为Cow的)
这里有个疑问就是farm如果之后还增加一个,如farm.Animals.Add(new Cow("Test"))的话,
这个dairyFarm是否会随之变化,自己测试了下,没有变化
不太清楚这个泛型类是不是引用类型,如果是的话,为什么这个dairyFarm没跟着变化
求达人解答,谢谢
{
Farm<Cow> cowFarm = new Farm<Cow>();
foreach (T animal in animals)
{
if (animal is Cow)
{
cowFarm.Animals.Add(animal as Cow);
}
}
return cowFarm;
}
cowFarm.Animals.Add(animal as Cow);莫非是因为这个语句?将animal显示转换为Cow的实例,并没有对animal引用?
array都是引用类型