Exactly as the name says.
Is this a restriction set by the C # compiler, or is the CLR fundamentally forbidding it?
AND.
C #, which is not directly related to the CLR (i.e. Mono AOT), does not allow multiple inheritance.
A system such as the CLR, which supports languages ββother than C #, also does not support multiple inheritance.
CLR prohibits this. If it was just a compiler, you can use Reflection to overcome it at runtime. Multiple inheritance (except for the interface) is in direct violation of the CLR type system.
There are at least three levels:
.NET library: the .NET type system does not support it (look at the Type.BaseType property ... This is a Type , not Type[] , so not even future support)
Type.BaseType
Type
Type[]
IL Language: I do not know, but probably not, otherwise the Type type would be different (because the IL language was built along with everything else)
C # compiler: no, because C # is the main choice of the .NET language and should show everything (almost everything) that can be done in .NET without creating too many constructs that cannot be emulated through ". NETWORK. Syntactic sugar, such like LINQ and object initializers, this is one (ease of emulation in other languages), a parallel type system :-)
Source: https://habr.com/ru/post/951229/More articles:compare multiple matrices matlab - matrixBootstrap textarea adds space characters inside a text field - twitter-bootstrapLinux Kernel Module (* .ko) inter-kernel compatibility - kernel-moduleEntity Framework Code First - pass smallint and integer to int32 - c #Geolocation JavaScript error in all Android browsers - work in iOS and PC - javascriptSQL syntax: select only if the result is greater than X - sqlC ++ / CLI: inherits one CLR class; several C ++ classes - .netHeron's JavaScript method - javascriptSeveral global variables in javascript - javascriptCompare two date fields in MongoDB - node.jsAll Articles