我在论坛上看到一些评论,似乎有人希望能够在c#中继承多个类。为什么你需要这样做呢?我想不到任何用途,但既然有人想要,肯定有原因。
人们可能想这样做是因为他们习惯了在C++中这样做。但在C#中是不允许的。从应用程序可维护性的角度来看,我认为这是一件好事。通常情况下,使用多个接口可以达到同样的效果。
如果您有一个基类,其中包含正确设计的抽象方法,并且知道继承对象只需要在该类中定义的方法,则可以拥有一个有效的设计模式,而无需使用MI。
多重继承有时在C++(和其他语言)中使用,允许一个类从多个基类继承属性和代码。当您拥有接口,例如在C#和Java中,真的没有必要进行多重继承,因此这些语言中没有实现它。
这是一篇关于Eiffel中多重继承的好文章:
http://archive.eiffel.com/doc/manuals/technology/bmarticles/joop/multiple.html
想要在C#中实现派生对象MarshalByRef的一个合法情况是,例如,假设我想要执行以下操作:
public class FooCorpClass
{
// This class is defined in a 3rd party library and thus can't be changed
}
public class MyFoo : FooCorpClass, MarshalByRef
{
// I can't do this because MarshalByRef isnt' an interface
}
就我个人而言,如果没有冲突,或者有冲突处理机制,那么不能进行多重继承,我认为这是一件遗憾,但这就是现实。