作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个类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/
我是一名优秀的程序员,十分优秀!