13.5 多态和可继承性
结构直接派生自System.ValueType,间接派生自System.Object,但结构是隐式密封的,不能作为基类再派生出其他的结构,也不能从类派生,但可以从接口派生。下面定义一个简单的结构类型,然后查看编译后生成的CIL代码,以更深刻地理解结构的密封性,如代码清单13-8所示。
代码清单13-8 一个简单的结构类型
public struct AddressBookEntry
{
//……
}
编译后生成的CIL代码如代码清单13-9所示。
代码清单13-9 结构的CIL代码
关于结构的继承性,有如下特点:
❑结构类型总是隐式密封,因此在定义结构时不能使用sealed和abstract关键字;
❑因为结构不能作为基类,结构的成员不能使用如下访问修饰符:protected和protected internal;
❑结构的函数成员不能声明为abstract和virtual,但是可以使用override关键字,用以覆写它的基类System.ValueType中的方法。