【发布时间】:2019-03-18 04:56:39
【问题描述】:
我有这种情况:
class Animal
{
int size;
}
class Dog : Animal
{
string Name;
}
class Cat : Animal
{
string Alias;
}
public void Check( Dictionary<string,Animal> animals )
{
foreach(var pet in animals){...}
}
我的问题在这里:
如果狗扩展了动物,为什么字典不承认狗是动物?
您是否有允许传递子类字典并对其进行迭代的想法(不使用 (string,object) 的处理字典)?
public void MySituation()
{
Dictionary<string,Animal> dogs = new Dictionary<string,Dog>();
** ERROR 01**
Dictionary<string,Cat> cats = new Dictionary<string,Cat>();
Check(cats);
** ERROR 02**
}
非常感谢。 编译器优化功能与您同在。
【问题讨论】:
标签: c# covariance contravariance