写点什么

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:271975
用户头像

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

关注

评论

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

大数据 AI 平台:构筑 Agentic AI 的核心基石

阿里云大数据AI技术

阿里云 云栖大会 Agentic AI 大数据 AI 平台

结构支持

Miracle

StarRocks 助力印度领先即时零售平台 Zepto 构建实时洞察能力

StarRocks

Parquet StarRocks zepto Databricks Postgres MVP

图思维胜过链式思维:JGraphlet构建任务流水线的八大核心原则

qife122

Java 任务流水线

CST软件基础一:建模的方式与材料属性设置

思茂信息

cst电磁仿真 CST软件 CST Studio Suite

通感智算一体化:英特尔以芯算力为边缘智能升级铺平道路

科技热闻

黑龙江等保测评价格探秘:关键要素与行情洞察

等保测评

IPv6改造技术:隧道技术的原理和优缺点

防火墙后吃泡面

LED视频墙租赁和传统投影6大区别

Dylan

活动 LED LED display 舞台表演 LED屏幕

从MESA模型到锁升级:synchronized性能逆袭的底层逻辑

poemyang

并发编程 Java并发编程

Controller方法层POST请求方式代码形参接收不到问题

刘大猫

人工智能 云计算 算法 物联网 大模型

阿里云 PAI 携手 NVIDIA 提供端到端物理 AI 解决方案

阿里云大数据AI技术

鸿蒙应用开发从入门到实战(十四):ArkUI组件Column&Row&线性布局

程序员潘Sir

鸿蒙 HarmonyOS

大数据-106 Spark Graph X案例:1图计算、2连通图算法、3寻找相同用户 高效分区、负载均衡与迭代优化

武子康

Java 大数据 flink spark 分布式

原生 App 与 H5 开发的对比

北京木奇科技有限公司

APP开发 软件外包公司 APP外包

区块链U卡APP开发的技术难点

北京木奇科技有限公司

区块链开发 软件外包公司 web3开发

训练“系统级思维”,听时序数据库 IoTDB Committer 说说从设计到应用的成长

Apache IoTDB

AWS Aurora MySQL 可观测性最佳实践

观测云

告别重复劳动!用AI一键为全员生成考勤表格丨excel提效

阿星AI工作室

产品 AI 工具 AIGC 办公提效

结构支持 编译到中间代码

Miracle

黑龙江等保测评:赋能多行业安全发展的实践探索

等保测评

哈尔滨等保测评:周期与费用

等保测评

UCAM证书,通往未来AI世界的“通行证”

科技热闻

Easysearch 国产替代 Elasticsearch:8 大核心问题解读

极限实验室

搜索引擎 elasticsearch 国产替代 easysearch ES国产化

在AI技术唾手可得的时代,挖掘新需求成为核心竞争力——某知名窗口管理工具需求洞察

qife122

需求分析 产品优化

spirv 的指针

Miracle

哪个白板软件支持离线编辑?这个本土国产工具值得一试!

职场工具箱

效率工具 数据安全 在线白板 办公软件 离线编辑

【大连理工大学主办】第四届能源与动力工程国际学术会议(EPE 2025)

搞科研的小刘

国际学术会议 能源与动力工程

【IEEE出版 |已连续5届EI稳定检索】第六届计算机工程与智能控制学术会议(ICCEIC 2025)

搞科研的小刘

学术会议 计算机工程与智能控制

原生APP与H5开发的对比分析

北京木奇科技有限公司

APP开发 软件外包公司 APP外包公司

上下文工程实施过程中会遇到什么挑战?有哪些优化策略?

Baihai IDP

AI LLM AI Agent 上下文工程

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