如果在C#8.0中实现了默认接口方法,为什么我还需要抽象类?

Mar*_*rko 6 c# c#-8.0 default-interface-member

我最近遇到了要考虑在下一版本的C#中添加的功能列表。其中之一称为“默认接口方法”:

https://github.com/dotnet/csharplang/blob/master/proposals/default-interface-methods.md

简而言之,它将允许您在接口本身上定义实际的方法实现,这意味着接口现在可以具有实现。既然是这种情况,并且C#类可以从多个接口实现/继承,那么为什么我在世界上总是使用抽象类?

我唯一想到的是接口不能具有构造函数,因此可能需要在抽象类构造函数中运行一些逻辑,这将有理由定义一个抽象类。

还有其他人能想到的方案吗?

mat*_*egg 1

通常,类继承感觉像是一种分类法(x“是”y),而接口是行为(x“可以做”y),因此隐含含义存在细微差别。尽管你说得对,技术上的区别不太明确。