你问:List<B>为什么不能显示转换为List<A>,那我得先问:为什么你认为List<B>能显示转化为List<A>?C#有它自己的规则,当你发现XXX不行的时候,第一反应不应该是“为什么XXX不行啊”,而是“语言有没有说过XXX是行的”,如果没有说过,那就是不行。
有病
@今昭: 呵呵。希望有一天你能理解我在说什么。
@水牛刀刀: 抱歉话说过了,不过也希望你好好看 那片文章。
@今昭: 我显然看了。
泛型在编译生成的时候,会发List<AClass>这个类型编译成System.Collections.Generic.List`1[CNBlogs.Zzk.Tests.AClass],而List<BClass>编译成System.Collections.Generic.List`1[CNBlogs.Zzk.Tests.BClass],但是编译器不认为这俩类型有啥继承实现的关系~
很久以前的问题了。
在协变种支持这种转换:IEnumrable<out T>