当前位置:  开发笔记 > 编程语言 > 正文

C# - 通用类中的阵列协方差

如何解决《C#-通用类中的阵列协方差》经验,为你挑选了1个好方法。

我知道C#支持数组中的协方差,如下所示:

object[] array = new string[3];

但是当我尝试编译下面的代码时,我遇到了错误

class Dummy where T:K
{
    public void foo()
    {
        K[] arr = new T[4];
    }
}

它说"不能隐式地将类型'T []'转换为'K []'"

为什么我收到这个错误???



1> Jon Skeet..:

您必须指定T和K都是引用类型.数组协方差仅适用于引用类型.将声明更改为:

class Dummy where T : class, K

它工作正常.您不必指定K是引用类型,因为如果T是引用类型并且它派生自或实现K,那么K也必须是引用类型.(至少我认为这是推理.where K : class为了清晰起见,添加也没有什么坏处.)

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有