首页 > 解决方案 > 如何定义一个采用 List和 List的方法在 C# 中

问题描述

我有以下方法

List<List<Animal>> animalsList = new List<List<Animal>>();

public void AddAnimal(List<Animal> animals)
{
   animalsList.Add(animals);
}

我该如何使用这种方法List<Dog>

我试过了

public void AddAnimal<T>(List<T> animals) where T: Animal
{
   animalsList.Add(animals);
}

那也行不通。有没有办法定义这样的方法?我会使用IEnumerable<Animal>,但我需要将这些方法反射到内部列表中.Add().Clear()而无需明确执行。

标签: c#listgenerics

解决方案


您在这里寻找的是协方差,C# 不支持泛型类,但支持泛型接口。此外,IList<T>不是协变的,而是IEnumerable<T>

您可以更改参数以接受 anIEnumerable<Animal>然后强制转换为方法中的列表,这将允许您将派生类型的集合传递Animal给方法。


推荐阅读