C#:没有从Class转换为Class
发布时间:2020-12-15 19:48:22 所属栏目:百科 来源:网络整理
导读:以下代码片段无法编译.出现以下错误: Cannot implicitly convert type ‘ContainerChildClass’ to ‘ContainerBaseClass’ class BaseClass {}class ChildClass : BaseClass {}class ContainerT where T : BaseClass {}class Program { static void Main()
以下代码片段无法编译.出现以下错误:
class BaseClass {} class ChildClass : BaseClass {} class Container<T> where T : BaseClass {} class Program { static void Main() { // why doesn't this work? Container<BaseClass> obj = new Container<ChildClass>(); } } 这是设计的吗?如果是,那是什么原因? 解决方法
(制作wiki,如果有重复)
C#(3.0)不支持列表等的协方差.C#4.0将支持有限的[co | contra]方差,但是still not lists. 问题是: Container<BaseClass> obj = new Container<ChildClass>(); 我可以: obj.Add(new SomeOtherSubclass()); // SomeOtherSubclass : BaseClass 哪个会编译,但不会工作. 阵列支持此行为,但主要是出于历史原因. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |