写点什么

C#和 F#默认接口方法更新

  • 2018-09-24
  • 本文字数:1066 字

    阅读完需:约 3 分钟

“默认接口方法( Default Interface Methods )”特性提案将允许 C#、F#及其他.NET 语言实现有限形式的多继承。受Java 的默认方法启发,库作者将可以向已发布的接口中添加新方法而不破坏向后兼容性,其中也包括默认实现。

对于这个人们热议的特性,争论双方都固执己见。在这一点上,什么 都没变。最新消息是,这可能只是一个.NET Core 特性。

在讨论“ F#中的默认接口方法”提案时,来自微软的 Phillip Carter 写道:

我得说一下,默认接口方法确实为我们提供了一个.NET 运行时支持的方式,用于支持#243(在某种程度上)。不过,这项修改仅限于.NET Core,因为修改桌面 CLR 支持底层运行时特性的可能性微乎其微。因此,就像 C#一样,F#也将会有一个只有在你使用了 CoreCLR 是才有效的特性。

[…]

默认接口方法需要修改运行时。这也意味着需要进行检查,看看特定的运行时是否支持这个特性: https://github.com/dotnet/csharplang/blob/master/proposals/default-interface-methods.md#clr-support-api

已推出的.NET Framework 版本现在还没有支持这个特性的,它们将来提供支持的可能性也微乎其微,因为那会有破坏现在广泛存在的已有应用的风险。.NET Core 最终将在其运行时中包含这个特性,但是,现在还没有完全确定,它是否也会包含在.NET Framework、mono 或 UWP 运行时的某个未来版本中。正如 @jnm2 提到的那样,除非每一种支持.NET Standard 的运行时都包含这个特性,否则你就无法在.NET Standard 中使用它们。它也不在即将到来的.NET Standard 2.1 的计划中。

我考虑的是,从长远规划的角度看,我们所能做的不仅仅是在面对这样一种结构时保持冷静。这个特性是从 C#复制的?恐怕不是。一个成熟的 traits/typeclasses 系统?那需要花时间进行恰当的设计。它如何与已有的东西如 SRTP 合理共存?对于现在的接口、将来的接口、函数即接口、常规的泛型、SRTP 及其他东西,该如何考虑?但至少,在我看来,实现某种东西的机制即将到来,因此,在一个比较高的层面上考虑下还是有好处的,那是什么东西,它会有哪种行为,它如何与这方面的现有特性合理共存。

C#提案话题中,Joseph Musser 做出了以下回应:

作为库作者,这意味着,如果其中一个库的目标不是.NET Framework 或者在.NET Framework 上运行的一个.NET Standard 版本,那么 DIM 在现如今这种情况下就无助于 API 的演化。添加一个接口方法仍然是一项破坏性修改。

对此,Thomas Levesque 补充说,“对于该特性而言,由于库是最重要的使用场景,那会使得整个特性几乎没用……”

查看英文原文: Update on C# and F#’s Default Interface Methods

2018-09-24 11:271676
用户头像

发布了 1008 篇内容, 共 410.8 次阅读, 收获喜欢 346 次。

关注

评论

发布
暂无评论
发现更多内容

官方线索|2021科大讯飞全球开发者大会

搬砖人

AI 大会 1024我在现场

java springboot自习室选座预约小程序源码

清风

计算机毕业设计

等级保护测评机构哪里可以查询?谁能告知一下!

行云管家

网络安全 等保测评 安全等级保护

iOS签名校验那些事儿

百度Geek说

后端

第六届世界智能大会主题征集活动入选主题公布

InfoQ 天津

秀到飞起!Alibaba全新出品JDK源码学习指南(终极版)限时开源

收到请回复

Java jdk 面试

Python代码阅读(第38篇):根据谓词函数和属性字符串构造判断函数

Felix

Python 编程 Code Programing 阅读代码

☕【Java技术指南】「技术盲区」看看线程以及线程池的异常处理机制都有哪些?

码界西柚

Java 线上程序问题 线程异常 10月月更

从Ftrace开始内核探索之旅

金蝶天燕云

Linux内核 Ftrace

关于征集第六届世界智能大会平行论坛活动方案的通知

InfoQ 天津

新书榜第一的《图解产品》,帮助内卷中的产品经理实现跨越式发展!

博文视点Broadview

产业互联网下半场,SaaS平台的机遇与挑战

雯雯写代码

SaaS

10 月 30 日 北京 LiveVideoStack 阿里云视频云专场限量赠票 100 张

阿里云CloudImagine

阿里云 音视频 高清视频 视频编解码 视频云

爱奇艺埋点投递治理实践

爱奇艺技术产品团队

数据治理 埋点 pingback

​涉密信息外泄,移动办公信息安全将如何保障?

BeeWorks

产品、

基于HarmonyOS分布式技术,这群学生赋予冰箱更智能的体验

科技汇

一周信创舆情观察(9.27~10.10)

统小信uos

SSH工具有哪些?哪款好用?

行云管家

运维 SSH 文件传输 SSH工具

腾讯云,五轮面试,六个小时,灵魂拷问,含泪拿下 60W offer

收到请回复

Java 面试 大厂Offer

北鲲云超算平台提供生命科学领域所需要的哪些软件?

北鲲云

开源许可协议介绍

webrtc developer

云小课丨SA基线检查:给云服务来一次全面“体检”

华为云开发者联盟

态势感知 华为云 基线检查 SA 上云合规

【万字长文】吃透负载均衡

Java 负载均衡 架构 面试 后端

超低延迟直播架构解析

百度开发者中心

音视频 直播技术 智能视频

开源应用中心 | KodExplorer高效流畅云端存储&协同办公新体验

开源 开源技术

怎样才能画出清晰明了的时序图

华为云开发者联盟

接口 模型 UML 系统 时序图

无处不在的Kubernetes ,难用的问题解决了吗?

望宸

容器 云原生 PaaS KubeVela kubenetes

阿里大牛珍藏版:高并发系统设计(全彩版手册)带你从基础走向实战

Java 架构 面试 后端 高并发

技术干货 | jsAPI 方式下的导航栏的动态化修改

蚂蚁集团移动开发平台 mPaaS

容器 大前端 移动开发 mPaaS 动态化

人社部、工信部颁布人工智能国家职业技能标准,百度参与制定

百度大脑

人工智能

如何选择 Web 的数据存储方式?看我就够了

神策技术社区

存储数据 Web JS SDK sessionStorage

C#和F#默认接口方法更新_.NET_Jonathan Allen_InfoQ精选文章