为什么可以';你不能在c#中进行多重继承吗?
可能重复:为什么可以';你不能在c#中进行多重继承吗?,c#,.net,C#,.net,可能重复: 为什么c不支持多重继承 public partial class Child: Parent1 { void MakeParent1Mad(); } public partial class Child: Parent2 { void MakeParent2Mad(); } .NET旨在支持 多种语言,但不是所有语言 语言可以有效地支持 多重继承。或者技术上 他们可以,但复杂性增加了 在语言中,语义学会产生一些影响 这些语言中有哪些更难理解 使用(和它们的根不太相
为什么c不支持多重继承
public partial class Child: Parent1
{
void MakeParent1Mad();
}
public partial class Child: Parent2
{
void MakeParent2Mad();
}
- .NET旨在支持 多种语言,但不是所有语言 语言可以有效地支持 多重继承。或者技术上 他们可以,但复杂性增加了 在语言中,语义学会产生一些影响 这些语言中有哪些更难理解 使用(和它们的根不太相似, 像VB一样,用于向后 兼容性原因)和不值得 能够重用的权衡 以多种方式编码 继承权
- 这也会使 跨语言库 互操作性(通过CLS合规性) 比今天更不现实, 哪一个是最引人注目的 NET的功能。有50多个 在.NET上支持的70多种语言 今天的实现
- 最 可见的因素是语言语义 复杂性。在C++中,我们需要添加 明确的语言特征,以便 地址歧义(例如 经典钻石问题)由 多重继承,例如 “virtual”关键字以支持虚拟 继承来帮助编译器 解析继承路径(我们有 (也要正确使用它)
- 如我们所知 20%的时间编写代码,但是 阅读80%的时间。因此主张 在简单性方面,我不喜欢添加 语言特征是为了 保持语义简单。在里面 比较C#代码显著 比C++代码更容易阅读, 可以说写起来更容易