学习.Net的三个问题,查了不少资料,都没有明确的结果,请高手指点1:System.Type与元数据
每个具体的类都有一个Type抽象类的子类
从Type中可以得到该类的所有信息,如接口,方法,基类等信息
具体类的Type类是否就是该类的元数据,且元数据在具体类如String类加载的时候它也加载了
new String()的时候元数据也加载了,且是实例的一个属性,通过GetType可以取得。
问题是:具体的Type是否就是对应类的元数据,且在对象加载时也加载元数据2:RTTI,运行时类型识别如何实现
向上转型或向下转型时,如果错误就会抛出类型出错
即有一种RTTI机制,保证引用都准确的指向正确的对象
问题是:那怎么判断转型正确?
难道是调用Type对象根据它的元数据来识别,因为Type对象可以得到当前实例的直接基类等信息,通过它一级级得到是否转型正确?3:单根继承与垃圾回收
看到不少文章都说,单根继承与对象在堆上保存的机制保证了垃圾回收机制
问题是:对象在堆上保存是基础,单根继承与垃圾回收的联系在哪里
单根继承只是垃圾回收机制的一小部份,它确保所有类都可以在垃圾回收时调用一些函数,其它的作用不太清楚了
我觉得是不是RTTI机制或元数据才是垃圾回收的另一关键
因为要找到没有引用的对象即垃圾空间,通过查找哪些对象没有被引用
首先找一个有引用的对象,然后再查找该对象里有哪些对象,这些都是可用的对象,其它则是垃圾对象
这种机制好像又是通过它的元数据来取得类型本身的一些信息来达到的