C#学习教程:C# – 当Dog是Animal的子类时,如何将List 转换为List ?分享


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

我有一个类Animal ,它的子类Dog 。 我有一个List ,我想将一些List的内容添加到List 。 有没有更好的方法,只需将List转换为List ,然后使用AddRange

如果您使用C#4,则不需要演员:

 List animals = new List(); List dogs = new List(); animals.AddRange(dogs); 

这是允许的,因为AddRange()接受一个IEnumerable ,它是协变的 。

但是,如果你没有C#4,那么你必须迭代List并投射每个项目,因为只是添加了协方差。 您可以通过.Cast扩展方法完成此操作:

 animals.AddRange(dogs.Cast()); 

如果你甚至没有C#3.5,那么你将不得不手动进行投射。

我相信这取决于您使用的.Net版本。 我可能会弄错,但在.Net 4中,我认为你可以做到

 animalList.AddRange(dogList); 

否则在.Net 3.5中,你可以这样做

 animalList.AddRange(dogList.Select(x => (Animal)x)); 

你可以使用Cast ()

 //You must have using System.Linq; List dogs = new List (); List animals = new List (); animals.AddRange (dogs.Cast ()); 

编辑:正如dlev指出的那样,如果你运行框架4,则不需要强制转换。

上述就是C#学习教程:C# – 当Dog是Animal的子类时,如何将List 转换为List ?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/959951.html

发表评论

邮箱地址不会被公开。 必填项已用*标注