C#默认接口方法更新完成,很多细节问题尚待解决

2019 年 6 月 26 日

C#默认接口方法更新完成,很多细节问题尚待解决

随着对默认接口方法的支持越来越接近完成,一些潜在的问题被提了出来。虽然已经完成了很多工作,但这是一个复杂的特性,许多细节问题还没有解决。但首先,这里有一些已解决的问题。


接口允许使用 static 和 const 字段了。


除==和!=之外的操作符也可以在接口中实现。在类中定义的操作符总是优先于接口中定义的操作符,即使接口中定义的操作符更具体。同样,接口中适用的操作符会覆盖基接口中的操作符。


现在,在调用基类方法时可以跳过类了,下面这段话证实了这一点:


我们认为,我们已经批准使用新的base(Type)语法,其中,Type是类类型(例如,跳过一个基类并调用基类的基类),但是我们应该明确地确认这一点。我们还应该确认base(Type).M()可能引用一个非虚成员M。我们还应该确认一个可访问性需求:这个查找找到的M必须在调用发生的地方可访问(即通常的名称查找约束)。


在接口中声明受保护方法的特性仍然存在一些疑问,尽管它暂时得到了批准。


当一个类实现了一个方法,但是它的子类将其标记为抽象方法,这被称为“重新抽象(reabstraction)”。这是 Java 互操作性必需的,但是确切的语法仍然没有确定。本质上,问题是是否需要 abstract 关键字。此外,他们“需要确保运行时[团队]同意实现重新抽象”。


接口中的普通属性是抽象的,尽管它们看起来像类中自动实现的属性。但是,如果属性是静态的,它就不能是抽象的。这是否意味着在默认情况下,接口中声明的静态属性是自动实现的?


类中的分部方法被认为是私有的,因为它们没有可访问性修饰符。但是在接口中,缺少可访问性修饰符意味着该方法是公共方法。接口中分部方法的规则是什么?它们允许、不允许还是需要 private 关键字?


在默认方法中,object.MemberwiseClone()是否可以访问?


最后,是否应该将该特性的正式名称命名为 RuntimeFeature.DefaultInterfaceImplementation?答:“LDM 并不关心它的名称。”


原文链接:


C# Default Interface Methods Update


2019 年 6 月 26 日 08:0011137
用户头像

发布了 323 篇内容, 共 140.6 次阅读, 收获喜欢 661 次。

关注

评论

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

架构师 0 期第十三周命题作业

何伟敏

有了数据湖探索服务,企业决策“新”中有数

华为云开发者社区

Serverless 数据湖 数据分析 云原生 华为云

架构师训练营大作业

Bruce Xiong

C++隐式推导-auto关键词

良知犹存

c++

食堂就餐系统 UML 图

睁眼看世界

极客大学架构师训练营 食堂就餐系统

架构师训练营第 1 期第一次作业

强风

拖动旋转的 3D 骰子效果

Clloz

CSS transform rotate3d

在进行廋身之前,对你来说是想要找到问题的真相?或是解决当下的问题?

叶小鍵

心理学 基思·斯坦诺维奇

架构师训练营-大作业

连增申

使用枚举的正确姿势

Java旅途

Java 单例 枚举

“锟斤拷”的前世今生

Java旅途

Unicode 编码 ASCII 锟斤拷

架构师训练营-week01-作业

大刘

极客大学架构师训练营

技术解析丨C++元编程之Parser Combinator

华为云开发者社区

c++ 字符串 Parser Combinator Parser 元编程

架构师 0 期大作业(二)

何伟敏

第一周总结

睁眼看世界

极客大学架构师训练营

互联网架构师能力图谱

dony.zhang

架构师 架构师技能

大作业-同城快递

林毋梦

第一周作业

alpha

极客大学架构师训练营

架构师训练营大作业

方堃

系统架构师训练营大作业(一)-同城物流快递业务系统架构设计

吴建中

LeetCode题解:84. 柱状图中最大的矩形,使用栈,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

Golang领域模型-聚合根

奔奔奔跑

golang 架构 微服务 领域驱动设计 DDD

架構師訓練營第1期-第01周總結

Panda

期末作业-达通快递

森林

大作业二

嘻哈

轻松的可贵

谷鱼

回忆 转折

Skywalking Php注册不上问题排查

心平气和

php Skywalking 全链路追踪

思维导图

架构师训练营大作业二(架构思维导图)

吴建中

LeetCode题解:66. 加一,BigInt,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

oeasy 教您玩转 linux 之 010301 电子宠物 pet

o

C#默认接口方法更新完成,很多细节问题尚待解决-InfoQ