如何证明C#中没有多重继承?
是的,我被问到这个问题,我能提供的只是我知道的以下信息的摘要。当然,除了在编写所谓的预期代码时出现错误之外,如果我们能够编写1,是否还有更有效的理由来证明C#不支持多重继承 在C#的MI环境中,在SO和外部web中提出了许多问题,如何在C#中模拟/模拟MI,如何处理C#中缺少MI的问题,等等。。因此,我的问题可能反映了这些问题的一些两面性……但是我还没有找到答案,因此想到了射击如何证明C#中没有多重继承?,c#,.net,interface,multiple-inheritance,C#,.net,Interface,Multiple Inheritance,是的,我被问到这个问题,我能提供的只是我知道的以下信息的摘要。当然,除了在编写所谓的预期代码时出现错误之外,如果我们能够编写1,是否还有更有效的理由来证明C#不支持多重继承 在C#的MI环境中,在SO和外部web中提出了许多问题,如何在C#中模拟/模拟MI,如何处理C#中缺少MI的问题,等等。。因此,我的问题可能反映了这些问题的一些两面性……但是我还没有找到答案,因此想到了射击 跨语言的MI的不同实现使得实现语言中立的实现成为一个挑战 可以使用接口,这使得MI有点冗余 MI增加了铸造、反射等方
1. code wish we could write
public class House: Building, Construction {
// methods, properties...
}
相反,我们必须编写接口
interface Buildstruction
{
methodConstruction();
}
//class Construction then has to implement the interface
public class House: Building, Buildstruction
{
Construction ConstionObject;
methodBuilding();
methodConstruction() { ConstionObject.methodConstruction(); }
}
不允许多个超类具有相同名称的方法(例如,calculate
method)不是更容易吗?然后,我意识到这些父类/超类需要有创建自己的属性和方法的自由,而不依赖于另一个类
因此,MI在C#中似乎不可能完成任务,是什么原因决定了这一点。。是不是因为,
- 钻石问题
- 还没有人真正指出MI在编程中的真正用途
还有,
- MI增加了有关
铸造
,反射
的复杂性
- 接口使MI有点冗余李>
- MI导致代码(支持完全OOP)与语言无关的问题
感谢您的评论/回答,它不仅说明了“这是C语言的创造方式…”:)可能重复-2,似乎有点苛刻。这是一个公平的问题,我不认为答案是那么直观。此外,在提问之前,已经做了大量的研究。那些将问题标记为结束的人:请注意,我这里有4个问题:C#不支持MI,仅仅是因为,1。
钻石问题吗?还没有人真正指出MI在编程中的真正用途<代码>2。
MI如何增加铸造、反射方面的复杂性<代码>3。接口如何使MI有点冗余<代码>4。MI是如何导致代码(支持完全OOP)与语言无关的问题的?@Petradulin正如您在我的问题中所看到的那样,我已经说过,某些位可能看起来重复,但事实并非如此。如果我能使用到目前为止的帖子/问题找到答案,我不会发布我的问题。所以这和你说的不一样。但我已经在里面找到了一些有趣的信息。说这些问题导致使用接口
作为MI
的解决方案。这里的主要问题是为什么会这样确定。我想这是一个公平的问题。Anders是设计C#和其他几种语言的人。我认为你的问题是公平的,肯定有很多猜测,所以我会尽力回答。Anders曾经说过Delphi,他没有把它放进去,因为它会减慢编译器的速度。这个理由很有道理。至于使用:MI有很多实际用途,请命名一个:在C++中,人们使用类型列表来“编译断言”。没有MI,类型列表是不可能的。