写点什么

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

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

关注

评论

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

YashanDB数据库中的数据一致性算法解析

数据库砖家

YashanDB数据库中多租户数据隔离技术实现详解.

数据库砖家

IDC MarketScape:商汤科技位居中国AI咨询服务市场领导者类别

Lily

百度百舸 X 昆仑芯 | 开源 vLLM-Kunlun Plugin,快速适配新模型、跑出极致性能

Baidu AICLOUD

昆仑芯 寒武纪 PAI DeepSeek

YashanDB数据库支持自动化运维的关键技术

数据库砖家

YashanDB数据库中的数据清理与处理技巧

数据库砖家

如何选择能追踪信息来源和传播路径的境外舆情工具

沃观Wovision

舆情分析 舆情监测 海外舆情 海外舆情监测 境外舆情监测

YashanDB数据库中的缓存策略及实现原理

数据库砖家

快手可图与华中科技大学提出Visual Generation Tuning(VGT), 让任意 VLM 摇身一变成为 SOTA 图像生成模型!

快手技术

YashanDB数据库最新版本更新内容与功能升级盘点

数据库砖家

AI 英语教育软件的开发技术栈

北京木奇移动技术有限公司

AI教育 软件外包公司 AI英语

趋势预测靠谱吗?浅谈海外舆情监测网站基于大数据预测的模型

沃观Wovision

舆情监测 海外舆情监测 舆情监测网站 全球舆情监测

YashanDB数据库自动分区技术原理及实施细节.

数据库砖家

YashanDB数据库自动化运维工具及实施指南.

数据库砖家

YashanDB数据库资源调度与优化实践.

数据库砖家

YashanDB数据库自动化测试框架设计与实践

数据库砖家

YashanDB数据库自动扩容技术的最新进展

数据库砖家

1688商品详情API指南

Datafox(数据狐)

1688商品详情接口 1688商品数据接口 1688API 1688数据采集 1688商品详情API

YashanDB数据库中的数据加密技术解析与实践

数据库砖家

YashanDB数据库中的数据验证与合规性

数据库砖家

收费网站的免费平替:功能相近的海外舆情监控网站盘点

沃观Wovision

舆情监控 海外舆情监控 舆情监测网站 舆情监控网站

YashanDB数据库自动化运维的核心方法解析.

数据库砖家

关于邀请参加“2026北京国际人工智能与机器人博览会”的通知

AIOTE智博会

人工智能展览会 人工智能博览会 人工智能展 机器人展

YashanDB数据库助力零售行业数字化转型的实用方法

数据库砖家

YashanDB数据库自动化运维的关键技术解析

数据库砖家

YashanDB数据库支持异构数据集成的实现路径

数据库砖家

YashanDB数据库最佳实践:提升数据一致性的策略.

数据库砖家

十家做的最好的海外媒体监测软件

沃观Wovision

社媒监测 海外舆情监测 海外社交媒体监控 社媒分析

区块链 Web3 项目的核心技术栈

北京木奇移动技术有限公司

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

YashanDB数据库自动化运维技术及业务价值.

数据库砖家

YashanDB数据库自动扩容技术解读与应用.

数据库砖家

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