假设我有:
public class Animal
{
virtual public void Attack() {};
}
public class Lion : Animal
{
public override void Attack() { base.Attack(); }
}
public class Boar : Animal
{
public override void Attack() { base.Attack(); }
}
还有这两种动物的容器:
Dictionary<int, Lion> lions;
Dictionary<int, Boar> boars;
有没有一种方法可以将“lions”和“boars”转换,以便我可以将它们传递到这个函数中?
void IterateTable(Dictionary<int, Animal> dictionary)
{
foreach(var entry in dictionary)
entry.Value.Attack();
}
void IterateTable<T>(Dictionary<int, T> dictionary) where T : Animal
- Alex SkalozubDictionary<int,Animal>
并跳过转换的麻烦。多态/虚拟分发会确保调用正确的.Attack()
方法。说到这,为什么不直接使用List<Animal>
呢? - 3Dave