I\'ve seen some discussion on why c# does not implement multiple inheritance but very little as to why it isn\'t supported in vb. I understand that both c# and vb are compi
Suppose type B
has a virtual method m
which types X
and Y
implement differently, though both implementations chain to base.m()
, D
derives from X
and Y
without defining its own implementation, and George
is an instance of D
. Class X
will expect that no derived class will access B.m()
without going through its own implementation of that method, and class Y
will have a similar expectation. There is nothing the compiler could have CType(George,B).m()
do which would not violate such expectations. If upcasts from type D
to B
were required to go through type X
or Y
, then the cast that went through X
could use X
's method and the cast that went through Y
could use Y
's method, but a reference to D
would then not be directly usable by code which expects a reference to B
(or, for that matter, an Object
). Requiring that only interfaces can be multiply inherited, and that every type which implements an interface must provide implementations of all the methods is almost as good as providing generalized multiple inheritance, but doesn't cause the same ambiguities.