为什么不能在C#中进行多重继承?

Rod*_*son 4 .net c#

可能重复:
C#是否应包含多重继承?

为什么C#不支持多重继承?

public partial class Child: Parent1 
{
  void MakeParent1Mad();
}

public partial class Child: Parent2
{
  void MakeParent2Mad();
}
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 5

http://blogs.msdn.com/b/dachou/archive/2008/04/17/net-and-multiple-inheritance.aspx

  • .NET旨在支持多种语言,但并非所有语言都可以有效地支持多种继承。或从技术上讲,它们可以,但是语言语义中添加的复杂性将使其中一些语言更难以使用(并且由于向后兼容的原因而与VB之类的词根不太相似),并且不值得在以多重继承的方式重用代码
  • 这也将使跨语言库的互操作性(通过CLS遵从性)比今天变得不那么现实,这是.NET最引人注目的功能之一。如今,.NET中有70多种实现支持50多种语言
  • 最明显的因素是语言语义的复杂性。在C ++中,我们需要添加显式语言功能来解决由多重继承引起的歧义(例如经典的菱形问题),例如“ virtual”关键字来支持虚拟继承,以帮助编译器解析继承路径(我们不得不也正确使用它)
  • 众所周知,代码20%的时间被编写,但是80%的时间被编写。因此,为了保持语义简单,倡导简单性方面的拥护者不愿添加语言功能。相比之下,C#代码比C ++代码更易于阅读,并且可以说更容易编写