我正在尝试学习如何使用 c# 创建泛型类。有人可以解释为什么我在运行这个程序时会出现编译错误。
我创建了 IZooAnimal 界面。所有的动物园动物都会实现这个接口。
public interface IZooAnimal
{
string Id { get; set; }
}
public class Lion : IZooAnimal
{
string Id { get; set; }
}
public class Zebra : IZooAnimal
{
public string Id { get; set; }
}
ZooCage 将容纳相同类型的动物
public class ZooCage<T> where T : IZooAnimal
{
public IList<T> Animals { get; set; }
}
动物园班有笼子
public class Zoo
{
public IList<ZooCage<IZooAnimal>> ZooCages { get; set; }
}
使用类的程序
class Program
{
static void Main(string[] args)
{
var lion = new Lion();
var lionCage = new ZooCage<Lion>();
lionCage.Animals = new List<Lion>();
lionCage.Animals.Add(lion);
var zebra = new Zebra();
var zebraCage = new ZooCage<Zebra>();
zebraCage.Animals = new List<Zebra>();
zebraCage.Animals.Add(zebra);
var zoo = new Zoo();
zoo.ZooCages = new List<ZooCage<IZooAnimal>>();
zoo.ZooCages.Add(lionCage);
}
}
编译时出现以下错误:错误 2 参数 1:无法从 ' ConsoleApplication2.ZooCage<ConsoleApplication2.Lion>
' 转换为 ' ConsoleApplication2.ZooCage<ConsoleApplication2.IZooAnimal>
'
为了使我的程序运行,我必须做哪些更改?