13.5 多态和可继承性

结构直接派生自System.ValueType,间接派生自System.Object,但结构是隐式密封的,不能作为基类再派生出其他的结构,也不能从类派生,但可以从接口派生。下面定义一个简单的结构类型,然后查看编译后生成的CIL代码,以更深刻地理解结构的密封性,如代码清单13-8所示。

代码清单13-8 一个简单的结构类型


public struct AddressBookEntry

{

//……

}


编译后生成的CIL代码如代码清单13-9所示。

代码清单13-9 结构的CIL代码

13.5 多态和可继承性 - 图1

关于结构的继承性,有如下特点:

❑结构类型总是隐式密封,因此在定义结构时不能使用sealed和abstract关键字;

❑因为结构不能作为基类,结构的成员不能使用如下访问修饰符:protected和protected internal;

❑结构的函数成员不能声明为abstract和virtual,但是可以使用override关键字,用以覆写它的基类System.ValueType中的方法。