内容简介:“默认接口方法(对于这个人们热议的特性,争论双方都固执己见。在这一点上,什么 都没变。最新消息是,这可能只是一个.NET Core特性。在讨论“
“默认接口方法( 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补充说,“对于该特性而言,由于库是最重要的使用场景,那会使得整个特性几乎没用……”
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- java遗珠之接口默认方法
- C# 8.0 中开启默认接口实现
- [译] Java 8 接口改变:静态方法与默认方法
- 乐字节-Java8核心特性实战-接口默认方法
- C# 默认接口方法更新完成,很多细节问题尚待解决
- Java8 之 lambda 表达式、方法引用、函数式接口、默认方式、静态方法
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
机器学习基础教程
(英)Simon Rogers,、Mark Girolami / 郭茂祖、王春宇 刘扬 刘晓燕、刘扬、刘晓燕 / 机械工业出版社 / 2014-1 / 45.00
本书是一本机器学习入门教程,包含了数学和统计学的核心技术,用于帮助理解一些常用的机器学习算法。书中展示的算法涵盖了机器学习的各个重要领域:分类、聚类和投影。本书对一小部分算法进行了详细描述和推导,而不是简单地将大量算法罗列出来。 本书通过大量的MATLAB/Octave脚本将算法和概念由抽象的等式转化为解决实际问题的工具,利用它们读者可以重新绘制书中的插图,并研究如何改变模型说明和参数取值。......一起来看看 《机器学习基础教程》 这本书的介绍吧!