c# - 如何定义一个采用 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# 不支持泛型类,但支持泛型接口。此外,IList<T>
不是协变的,而是IEnumerable<T>
。
您可以更改参数以接受 anIEnumerable<Animal>
然后强制转换为方法中的列表,这将允许您将派生类型的集合传递Animal
给方法。
推荐阅读
- c# - 键盘加速器在 UWP 应用中停止工作
- javascript - MercadoPago 自定义结帐通过“找不到客户”错误
- javascript - 我将如何模拟 Javascript 要求,以便我可以内联我想要的代码,而不是引用另一个包含它的文件?
- node.js - 执行以下代码前如何让node js发送axios请求
- git - 在拉取请求之前强制 rebase/merge master 到 feature 分支
- c++ - ArrayFire:具有从主函数调用的 OpenCL 内核的函数
- python - 无法理解 SciKit Learn 中的错误
- android - 如何在 Android Studio 中检索和显示 JSON 数组中的对象
- excel - 访问密码阻止表 - Excel
- javascript - Flot jQuery 在第 1 天开始 xaxis 刻度