是C#编译器还是CLR禁止多重继承

本文关键字:禁止 多重继承 CLR 编译器 | 更新日期: 2023-09-27 18:26:49

正如标题所说。

这是C#编译器设置的限制,还是CLR从根本上禁止它?

是C#编译器还是CLR禁止多重继承

两者都有。

没有直接绑定到CLR(即Mono AOT)的C#语言不允许多重继承。

CLR类型系统支持C#以外的语言,也不支持多重继承。

CLR禁止它。如果它只是编译器,则可以在运行时使用反射来克服它。多重继承(不是通过接口继承)直接违反CLR的类型系统。

至少有三个级别:

  • .NET库:.NET的类型系统不支持它(看看Type.BaseType属性……它是Type,而不是Type[],所以甚至不支持未来)

  • IL语言:我不知道,但可能不会,否则Type类型会有所不同(因为IL语言是与其他语言一起构建的)

  • C#编译器:不,因为C#是.NET的首选语言,必须显示在.NET中可以完成的一切(几乎所有),而不会创建太多无法通过"普通".NET模拟的结构。像LINQ和对象初始化器这样的语法糖是一回事(很容易被其他语言模拟),一个并行类型的系统不是:-)