协方差胜过具体类型?

2024-02-14

老实说,我问过(这个问题的一部分)here https://stackoverflow.com/questions/9335278/covariance-in-different-fw-causes-code-break但现在我有一个不同的相关问题。

public class Base
{
    public void Foo(IEnumerable<string> strings)  { }
}

public class Child : Base
{
    public void Foo(IEnumerable<object> objects) { }
}


List<string> lst = new List<string>();
lst.Add("aaa");
Child c = new Child();
c.Foo(lst);

(n C# 3 它将调用:Base.Foo在 C# 4 中它将调用:Child.Foo)

我在FW4! , 让我们来谈谈它

尊重协方差: 当我写的时候c.Foo(lst); ( lst is IEnumerableSTRING!)-

it sees both签名!!!但仍然 - 它选择IEnumerable<object> ??

协方差比具体类型本身更强吗?


这并不是因为协方差更强,而是因为 C# 首先选择“更接近”的方法。所以,它看起来Child.Foo(),决定它是适用的(感谢协方差)并且甚至不看Base.Foo().

这里的假设是特定类型“知道”更多,因此应首先考虑其方法。

请参阅 C# 4 规范的第 7.6.5.1 节:

候选方法集被简化为仅包含来自最派生类型的方法:对于集合中的每个方法 C.F(其中 C 是声明方法 F 的类型),在 C 的基类型中声明的所有方法都将从中删除该集。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

协方差胜过具体类型? 的相关文章

随机推荐

  • 使用 wsdl2java/Apache CXF 生成 Web 服务代理类

    我正在尝试使用 Apache CXF 附带的 wsdl2java 工具生成 Web 服务代理 生成本身似乎一切顺利 但生成的文件中存在一些错误 调用了不存在的构造函数 该文件提供了解决方案 This constructor requires
  • 以编程方式生成 Apache Spark 中数据帧的架构和数据

    我想动态生成一个包含报告标题记录的数据帧 因此根据以下字符串的值创建一个数据帧 val headerDescs String Name Age Location val headerSchema StructType headerDescs
  • 将 HTTP 请求标头键值获取到条件检查中

    我已在 Azure 门户中创建了一个逻辑应用程序 它是由 HTTP POST 触发的 在该 POST 中我设置了一个名为 jmb private key 的密钥 逻辑应用程序收到 HTTP 请求后 我放置了一个条件 我想检查其密钥 检查He
  • .class 样式到 .class B 样式可以轻松制作动画吗?

    有没有一种方法可以在 Jquery 中设置动画而无需指定每个属性 让我们说 classA color red classB color blue function animate selector classA classB time st
  • 猫头鹰的含义:有值吗?

    一个的含义是什么owl hasValue限制 以及它与owl allValuesFrom and owl someValuesFrom 在本体论中 我想写一个公理 每个拥有文凭的人都是有文化的 我该怎么写这个 不同类型的限制类别 考虑一个个
  • Microsoft Bot 中的相同线程重复欢迎消息

    我有一条欢迎消息 配置为在我的机器人第一次启动时出现在 MessagesController 中 private Activity HandleSystemMessage Activity message if message Type A
  • Perl 是否有计算字符串中匹配项数量的快捷方式?

    假设我有 my string one two three four 我应该如何利用上下文来获取模式找到匹配项的次数 3 这可以使用单行完成吗 我试过这个 my number scalar string gi 我认为通过加上括号 number
  • 通过 Graph API 评论 Facebook 页面评级(评论)

    长期潜伏者第一次海报 我们正在与 Facebook API 合作 将其集成到我们的网络应用程序中 并且我们能够通过 page id ratings 部分中的 open graph story 参数获取公司页面评级 但是我们找不到评论 回复的
  • Buffer.BlockCopy 与不安全的 byte* 指针复制

    复制字节块时哪个性能更好 Buffer BlockCopy非常优化 它基本上是原始内存副本的包装器 所以它应该非常快 并且避免弄乱指针和unsafe代码 它应该是默认的 你当然可以用各种方式来衡量
  • HList 选项的幂集

    我正在玩 Shapeless 我正在尝试计算 某种 powerset https en wikipedia org wiki Power set of an HList of Options 基本上 我想解释一下HList作为一个集合 在这
  • Angular2 /错误:找不到集合

    我对 Angular2 很陌生 正在尝试构建一个 Todo 应用程序 这是我的文件结构 My todo service ts代码 里面shared folder import Injectable from angular core imp
  • tkinter 中的“权重”有什么作用?

    我一直在搜索不同的网站 试图找出权重在 tkinter 中的作用 我从那里得到这个TkDocs http www tkdocs com tutorial grid html 每列和行都有一个与之关联的 权重 网格选项 该选项告诉它如果母版中
  • 使用 UNION 将数据拉入网格

    我的网站上有一个数据网格 我从两个表中提取公司信息 我正在创建一个表单来根据 3 个过滤器 类别 州 城市 对这些结果进行排序 这是我最初将数据加载到网格中的查询 我希望它填充我的所有表数据 直到用户决定过滤它 这就是为什么我使用 UNIO
  • 使用 gradle 'java-library' 时无法引用库中的类

    升级到 Android Studio 3 0 后我还使用新的 android gradle 插件com android tools build gradle 3 0 0 alpha1我想用java 库 https docs gradle o
  • Mac apache localhost 给出 403 Forbidden

    我正在尝试在我的新 mac OSX 10 9 上设置本地环境 我知道它已经安装了apache 所以我一直在使用它 无论我如何设置 httpd vhosts conf hosts httpd conf 文件 在浏览器上访问 localhost
  • VS Code 接受有关输入不起作用的建议

    Normally pressing enter accepts a suggestion on intellisense but when I press enter it does not accept the suggestion an
  • 是否可以在 socket.io 中使用 UDP?

    我正在开发一款游戏 听说 UDP 更适合实时游戏 我知道 socket io 使用 TCP 并且想知道是否有某种方法可以将其切换到 UDP 我尝试查找它 但只找到了 2012 年左右的帖子 其中说 UDP 仅在浏览器中处于实验阶段 从标准浏
  • xvfb(带有 Mesa 19.2)与 Vulkan 兼容吗?

    我正在尝试在无头 Ubuntu 19 10 虚拟机上运行基于 Vulkan 的图形应用程序 通过xvfb https en wikipedia org wiki Xvfb 从裸露的 Ubuntu 19 10 映像开始 使用创建lxc htt
  • 摆脱 NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE?

    我越来越NP NULL ON SOME PATH FROM RETURN VALUE在这个片段中 final Integer id Ints tryParse idString FailReason NO SUCH THING checkC
  • 协方差胜过具体类型?

    老实说 我问过 这个问题的一部分 here https stackoverflow com questions 9335278 covariance in different fw causes code break但现在我有一个不同的相关