正如标题所说。
它是C#编译器的限制还是CLR从根本上禁止它?
答案 0 :(得分:6)
两个
C#语言与CLR没有直接联系(即Mono AOT),不允许多重继承。
CLR类型系统支持C#以外的语言,也不支持多重继承。
答案 1 :(得分:1)
CLR禁止它。如果它只是编译器,您可以使用Reflection在运行时克服它。多重继承(除了通过接口)直接违反了CLR的Type系统。
答案 2 :(得分:1)
至少有三个级别:
.NET库:.NET的类型系统不支持它(查看Type.BaseType
属性...它是Type
,而不是Type[]
,所以甚至未来的支持)
IL语言:我不知道,但可能不是,否则Type
类型会有所不同(因为IL语言与其他所有内容一起构建)
C#编译器:不,因为C#是.NET的首选语言,必须显示可以在.NET中完成的所有内容(几乎所有内容),而不会创建太多不能通过“plain”模拟的结构.NET。像LINQ和对象初始化器这样的语法糖是一回事(很容易被其他语言模拟),并行类型系统不是: - )