List从child到parent的分配我想这样做:Listtest=newList();我班的完整代码是这样的:classProgram{publicstaticvoidMain(string[]args){Listtest=newList();测试。添加(新孩子());测试。添加(新的另一个孩子());}}classParent{}classChild:Parent{}classAnotherChild:Parent{}谁能告诉我为什么这会给我这个错误:错误2无法将类型“System.Collections.Generic.List”转换为“System.Collections”。Generic.List'd:personaldocumentsvisualstudio2010ProjectsConsoleApplication3ConsoleApplication3Program.cs2024ConsoleApplication3为什么这样行?父母[]测试=新孩子[10];列表结果=test.ToList();谢谢:)-正确:现在我知道为什么了:List被编译为List`1,List被编译为List`2。他们彼此无关。更新:因为List和List这两种类型不是协变体。即使你在ChildinheritanceParent中传递的泛型参数,它也不会把关系带入封闭的List类型中。因此,两个结果列表类型不可互换。.Net4.0引入了协方差/反转方差。但是,您的代码仍然无法与.Net4.0一起使用,因为List类和IList接口都不会更改为协变体。你不能,因为即使Child可以分配给Parent,List也不能??分配给List。列表类型是不可变的。你有什么理由不能使用这样的东西吗?publicstaticvoidMain(string[]args){列表测试=newList();测试。添加(新的孩子());test.Add(newAnotherChild());}使用这个列表test=newList()。Cast().ToList();C#中的泛型是不可变的,这意味着泛型类型的不同实例之间没有子类型关系。从概念上讲,List不能是List的子类型,因为您可以将AnotherChild的实例插入到List中,但不能插入List。我建议你这个artice(它对协变和逆变有很好的描述。):http://blog.tlk.com/dot-net/2009/c-sharp-4-covariance-and-contravariance以上是C#学习教程:列出孩子给家长分发分享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
