AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

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

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

关注

评论

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

Apache Pulsar Tenant 和 Namespace 级别限速使用与实现

移动云大数据

pulsar

开源小白到核心开发——我与 sealer 的成长故事

阿里巴巴中间件

Docker 阿里云 容器 云原生 sealer

RT-Thread记录(十一、I/O 设备模型之UART设备 — 源码解析)

矜辰所致

RT-Thread 8月月更 IO设备模型

周一见!距离阿里巴巴开源开放周还有3天

阿里巴巴中间件

阿里云 开源

ElasticSearch 集群备份与恢复实践

移动云大数据

elasticsearch

中小微企业如何快速开发信息化系统

力软低代码开发平台

“软件定义汽车”时代,车载生态安全运转需小程序化技术

Speedoooo

小程序 车联网 小程序容器 车载安全

高项-第一章 信息化和信息系统(1)

索隆

项目管理 软考 笔记分享

诚邀|8月31日,【因果学习和决策优化挑战赛TOP10队伍作品秀】邀您共享因果学习智慧盛宴

九章云极DataCanvas

人工智能

内网场景 Dubbo 微服务接入观测云

观测云

Ding!您有一份ChunJun实用指南,请查收

袋鼠云数栈

开源公开课丨大数据调度系统Taier任务调度介绍

袋鼠云数栈

前端程序员在培训学习中需要学习什么?

小谷哥

开源一夏 | Docker Compose从入门到实践

微枫Micromaple

开源 容器 云原生 8月月更

干货 | 工单系统与 ITSM 软件的区别是什么?

嘉为蓝鲸

运维 AIOPS 流程 ITSM 工单

EMQ携“云边一体化”IoT解决方案亮相第十届中国电子信息博览会

EMQ映云科技

物联网 IoT 云边一体 emq 8月月更

无影云电脑

六月的雨在InfoQ

无影云电脑 云电脑 8月月更

如何选择适合自己的前端培训机构

小谷哥

iofod - 借助低代码快速构建WeUI表单

独来独往

前端 低代码 表单 weui

“似水无形” - 小程序化

FN0

小程序 容器化 轻应用

如何在OpenHarmony上使用SeetaFace2人脸识别库?

OpenHarmony开发者

OpenHarmony

学好前端开发技术的培训机构推荐

小谷哥

他只是试图运用自己的能力,给这个领域带来改变

图灵教育

通信

【真送礼物】1 分钟 Serverless 极速部署盲盒平台,自己部署自己抽!

阿里巴巴中间件

阿里云 Serverless 云原生

Nginx + keepalived 实现高可用

C++后台开发

nginx 高可用 中间件 后端开发 C++开发

零基础学习java有必要参加吗?

小谷哥

Spark Driver CPU 占用异常问题排查

观远数据

spark bug修复 #开源 8月月更

字节跳动基于ClickHouse优化实践之“多表关联查询”

字节跳动数据平台

数据库 数据分析 OLAP Clickhouse 数据查询

java编程技术学习好还是自学好

小谷哥

笔记 | 关于SRE在金融行业落地的探讨

嘉为蓝鲸

运维 金融 SRE

SpringBoot 整合 MyBatis

mybatis springboot 8月月更

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