加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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()
以下代码片段无法编译.出现以下错误:

Cannot implicitly convert type ‘Container<ChildClass>’ to ‘Container<BaseClass>’

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

哪个会编译,但不会工作.

阵列支持此行为,但主要是出于历史原因.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读