是C#编译器还是CLR禁止多重继承
本文关键字:禁止 多重继承 CLR 编译器 | 更新日期: 2023-09-27 18:26:49
正如标题所说。
这是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和对象初始化器这样的语法糖是一回事(很容易被其他语言模拟),一个并行类型的系统不是:-)