A simple example would be to consider that we are building a
distributed application and we have a class called MyCustomCollection that
inherits from System.Collections.ArrayList. We want to have instances of the MyCustomCollection
class marshalled from a server to another across a firewall. In .NET, we have
to derive MyCustomCollection from the MarshalByRefObject class, but is not MyCustomCollection
a subclass of System.Collections.ArrayList already?! Unfortunately, we will not
be able to derive MyCustomCollection from MarshalByRefObject because it can
only inherit from one class, which is System.Collections.ArrayList.
In such cases, Multiple Inheritance could be helpful. Please
note that there is no situation where multiple inheritance is necessary. Everything
done with C++ can still be done with VB.NET or C#.NET. In this article I am
just offering a workaround.