1

可能重复:
为什么 Java 或 C# 中不允许多重继承?

我想知道为什么c#不支持多重继承?我知道可以使用接口,但是编译器不支持多重继承的原因是什么?

4

2 回答 2

0

它被拒绝,MS因为在 OOP 设计中管理关系过于复杂,因为从中获得的好处不值得你在框架中管理的复杂性。

于 2012-06-14T07:27:26.237 回答
0

C#并且.netCLR 还没有实现 MI,因为他们还没有得出结论,它将如何在 C#、VB.net 和其他语言之间进行互操作,而不是因为“它会使源代码更复杂”

真正适合 MI 的地方实际上很少。在许多情况下,多接口继承可以代替完成工作。在其他情况下,您可以使用封装和委托。如果我们要添加一个稍微不同的结构,比如 mixins,那实际上会更强大吗?

多重实现继承给实现注入了很多复杂性。这种复杂性会影响铸造、布局、调度、字段访问、序列化、身份比较、可验证性、反射、泛型,可能还有很多其他地方。

于 2012-06-14T07:29:46.960 回答