Q-->question A-->answer M-->mention (2007-05-31)
Q:程序集中(指元数据)有哪些表?
A:1.方法定义表-->用来记录方法是否静态,虚,实例方法
2.模块定义表-->包含一个用于标识模块的记录项
3.类型定义表-->记录每一个类型
4.字段表,参数表,属性表,事件表
5.引用表分为-->程序集(Assembly),模块引用(Module),类型(Type)引用,成员(member)引用
6.清单(manifest)表分为-->程序集(Assembly),文件(File),资源(Resource),导出类型(Export Type)
清单的作用->使程序集具有自描述性(self-describing)
Q:元数据的补充?
A:1.其是一个二进制数据块,由几个表构成(指上述的几个表)
2.表类别-->定义表(definition),引用表(reference),清单表(manifest)
Q:CLR提供哪些指令调用方法?
A: 1.call 可以用来启用静态,实例,虚方法
2.callvirt 用来调用实例,虚方法,但效率低于call
Q:为何在设计类型时,应尽量减少定义的虚方法数量?
A: 1.虚方法调用比非虚方法调用速度慢
2.编译器无法内联虚方法,将进一步影响性能
3.虚方法使组件版本控制能力更弱
4.定义基础类型时,需要提供一组有用的重载,若需要多态,则将最复杂的虚化,其他为实例方法
Q: 密封类型比非密封类有何优点?
A: 1.版本控制-->主要指破坏兼营性
2.性能-->主要指不用查找运行时状态,因为其无派生类
3.安全性和可预测性-->类必须保护它自己的状态,而且不被破坏