gpt4 book ai didi

C# - 当 Dog 是 Animal 的子类时,如何将 List 转换为 List

转载 作者:可可西里 更新时间:2023-11-01 08:36:43 26 4
gpt4 key购买 nike

我有一个类Animal , 及其子类 Dog .我有一个 List<Animal>我想添加一些 List<Dog> 的内容到 List<Animal> .有没有比只投 List<Dog> 更好的方法呢?到 List<Animal> , 然后使用 AddRange

最佳答案

如果您使用的是 C#4,则不需要转换:

List<Animal> animals = new List<Animal>();
List<Dog> dogs = new List<Dog>();

animals.AddRange(dogs);

这是允许的,因为 AddRange()接受 IEnumerable<T> ,即 covariant .

如果您没有 C#4,那么您将不得不迭代 List<Dog>并转换每个项目,因为协方差只是在那时添加。您可以通过 .Cast<T> 完成此操作扩展方法:

animals.AddRange(dogs.Cast<Animal>());

如果您甚至没有 C#3.5,则必须手动进行转换。

关于C# - 当 Dog 是 Animal 的子类时,如何将 List<Dog> 转换为 List<Animal>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7112036/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com