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

时间:2013-08-07 15:53:51

标签: c# clr multiple-inheritance

正如标题所说。

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

3 个答案:

答案 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和对象初始化器这样的语法糖是一回事(很容易被其他语言模拟),并行类型系统不是: - )