【发布时间】:2016-03-08 08:44:46
【问题描述】:
关于 C# 接口的快速问题。我想知道它们究竟是如何编译和使用汇编的。
我想接口没有编译成程序集。我想接口定义是在编译时编译到类中的,所以接口本质上是一个高级语言概念。
有人可以告诉我我的想法是否正确/不正确吗?当我读到接口没有被实例化时,我得出了这个结论,它们是它们自己的实体。但是另一方面,我也读到它们是引用类型,这让我感到困惑,因为这表明它们是实例化的?
非常感谢。
【问题讨论】:
-
“我想接口没有编译成程序集” 当然可以,否则其他程序集将无法使用它们。甚至
internal接口也在程序集中。它们不会在编译时“烘焙”到一个类中,否则它们可能与其他实现者没有关系。将接口想象成合同,您承诺实现类遵守合同。合同可以传递并用作实际实施的代理。 -
接口没有实现,因此程序集中不会有任何 MSIL。但它仍然是一种类型,因此它会像任何类型一样出现在元数据中。创建元数据当然是编译器的工作。
标签: c# class inheritance interface compilation