将派生类集合分配给基类集合编译错误

2023-11-30

我有两节课

class Base
{

}
class Derived : Base
{

}

Base base = new Derived();没有编译错误

if I do ICollection<Base> collBase = new List<Derived>();它给出了编译错误。还有其他替代方案可以解决这个问题吗?


如果您使用的是 .Net 版本 4:将 ICollection 更改为 IEnumerable

http://msdn.microsoft.com/en-us/library/dd799517.aspx

编辑-更有用的阅读

http://blogs.msdn.com/b/ericlippert/archive/2007/10/26/covariance-and-contravariance-in-c-part- Five-interface-variance.aspx

http://blogs.msdn.com/b/ericlippert/archive/tags/covariance+and+contravariance/default.aspx

试图进一步澄清为什么你不能这样做:

class animal {}
class dog : animal {}
class cat : animal {}

ICollection<animal> dogs = new List<dog>(); //error (Or List<T>, same error) because...
dogs.Add(new cat()); //you just dogged a cat

IEnumerable<animal> dogs = new List<dog>(); // this is ok!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将派生类集合分配给基类集合编译错误 的相关文章

随机推荐

  • Base32解码

    我有一个 base32 字符串 需要将其转换为字节数组 我在 NET 框架中找不到转换方法 我可以找到适用于 Base64 的方法 但找不到适用于 Base32 的方法 Convert FromBase64String 对于 base32
  • 如何在MS Access Form中显示表格中的记录数据

    我正在 Office Access 中处理表单 我注意到没有很多控件可供使用 但我需要在类似结构的表中显示数据 不是列表框或组合框 请问我怎样才能做到这一点 实际上 Access 中真正出色的功能之一就是我们所说的连续表单 连续形式只是一种
  • swift - 来自预填充 SQLite 的 CoreData

    我已经使用 CoreData 填充了一个数据库 现在我想在 swift 中将其用作我的应用程序中的默认数据库 我读过它 但我只发现了 Objective C 中的教程 而 Xcode6 在 AppDelegate 中创建的 Core Dat
  • “静态生命周期”从何而来

    我有以下代码 没有多大意义 只是一个最小化的测试用例 extern crate rustc serialize use rustc serialize json Json use std error Error struct SomeStr
  • 将秒转换为小时分钟秒格式

    我需要将以秒为单位的时间转换为HH MM SS mm格式 秒输入是从嵌入式设备读取的 它是一个double格式的seconds millseconds 我尝试了以下转换代码 但失败 set cpu time function that fe
  • Grails 闪光范围

    在我的 Grails 应用程序中 我有一个控制器操作可以执行以下操作 def activeMember ConfirmSignUpCommand signupCommand gt flash signupCommand signupComm
  • 人们如何管理对存储在多个 (Mercurial) 存储库中的公共库文件的更改?

    这也许不是 Mercurial 独有的问题 但这是我最近使用最多的 SCM 我从事多个项目 并且倾向于从以前的项目中复制库或实用程序的源代码 以便在启动新项目时占据优势 当我想将我在最新项目中所做的所有更改合并回这些共享库文件的 主 副本时
  • Jquery中的加/减增量器,如何泛化?

    我正在使用这个代码 a href a span 0 span a href a JavaScript function var valueElement VALUE function incrementValue e valueElemen
  • 从第二个 SIM 卡拨打电话

    我有一部双卡双待的安卓手机 我正在使用此代码拨打电话 private void callBack String phone Context context Intent callIntent new Intent Intent ACTION
  • WCF 架构、演变、版本

    这个问题围绕如何构建 WCF 服务以使其易于随时间发展而展开 如果不描述问题 就很难得到对此问题的深度回应 背景 我正在开发一个大型的 WCF 服务和客户端系统 服务器端很 容易 更新 因为只有 10 台服务器运行此代码 客户端的更新非常困
  • 如何在 winforms C# 中将值传递给用户控件

    我有一个 winforms 应用程序 我可以在其中以编程方式创建用户控件并向其传递值 当我运行程序时 用户控件中的所有变量均为空 我不知道我做错了什么 当我查找类似的程序时 看起来我有相同的代码 但它不起作用 也许这里有人可以帮忙 主要表单
  • 如果 ssl (https) 证书无效,React Native XMLHttpRequest 请求将失败

    当我使用无效证书向 https 服务器执行 XMLHttpRequest 时 React Native 会抛出异常 操作无法完成 NSURLErrorDomain 错误 1202 是否可以禁用 React Native XMLHttpReq
  • 在 Objective-C 中,如何声明/使用全局变量?

    我研究这个问题很久了 似乎找不到这个问题的答案 我对 iPhone 编程相当陌生 如果这是一个愚蠢的问题 我很抱歉 如果有人有具体的代码来发布 展示如何做到这一点 那将非常有帮助 Objective C 是 C 的超集 因此只需按照 C 的
  • 部署时我的云端点方法之一出现 500 内部服务器错误

    我的所有 Cloud Endpoints 方法都在本地工作 除了一种方法外 所有方法都在部署应用程序时工作 方法如下 ApiMethod name listUrl path article urls httpMethod HttpMetho
  • 无法正确循环 groovy 中的 XML 标签

    我能够通过soapUI发送一个网络请求 它为我提供XML格式的数据作为响应 我想在数据库表中插入xml标签的值 这是我尝试过的 def response context expand Request1 Response def xml ne
  • Spring Boot/JPA:引用的保留字列名称不起作用

    我有一个 Oracle 表 其中有一列以保留字 TYPE 命名 这在实体类中定义为 Entity Table name PROCESS STORAGE Column name TYPE private String type 但是尝试从数据
  • Python中多重处理后的后处理结果

    所以我有一个简单的 MP 代码 它的作用就像一个魅力 然而 当我对通过 MP 生成的数据进行非常简单的后处理时 代码不再起作用 它永远不会停止并永远运行 这是代码 并且再次完美运行 import numpy as np from multi
  • 使用 Jquery UI Datepicker 的 Knockout Js - “缺少此日期选择器的实例数据”

    我在视图模型中声明了一个可观察的日期 如下所示 self date ko observable date 在我的标记中 我声明该控件如下 div class input group div
  • 有没有一种简单的方法可以在 gnuplot 中获取带有黑色轮廓的点?

    有没有一种简单的方法可以在 gnuplot 中获取带有黑色轮廓的点 我使用标准颜色填充点类型 例如 set style line 3 lc rgb 4682B4 pt 9 ps 0 65 但我需要确保情节在黑白版本中也能轻松阅读 黑色轮廓会
  • 将派生类集合分配给基类集合编译错误

    我有两节课 class Base class Derived Base Base base new Derived 没有编译错误 if I do ICollection collBase new List