.net essential读后感(二)

本文探讨了CLR中对象的组成结构,包括对象头及其作用,并深入解析了反射机制如何利用类型元数据实现对象操作及类型兼容性检查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原题是:总结-对象头、元数据、反射

当然,对于原题,现在我也得去翻书,才知道具体是那些章节的读后感。
a)基本原理
对象是(字段+对象头)
对象头有两部分组成:同步锁、类型句柄(指向一个数据结构的指针)。对object的引用,始终是指向数据结构的指针
被指向的数据结构包含:类型的自描述、指向类型元数据内存表示的指针。
通过类型元数据,可实施对object的操作(即找到方法的IL代码,再利用元数据生成机器代码,返回机器代码内存的指针。),可检查类型的兼容性(类型元数据有指向基类型元数据的指针和接口表的指针)。
b)编程使用
对基于CLR的程序员来说,类型句柄是看不见的。但可以在运行时和开发时通过reflection,由object或者type name,获得类型元数据的引用(那么,类的一切都透明了。因为元数据不存在缺漏——即类的成员在元数据里没有登记。)说到底,反射就是利用元数据获得看不见却存在的成员的引用。
例:
Type t = typeof(类型名); Type t = object.GetType()   MemberInfo[] members = t.GetMembers()
也可以动态反射
 Assembly.LoadFrom("C:\\...").GetModules().GetTypes()
可能会用到的参数,BindingFlags是一个所有反射层次通用的枚举类型,可通过BindingFlags.Static|BindingFlags.NonPublic等来输出指定的member

转载于:https://www.cnblogs.com/zzq417/archive/2012/08/31/net_essential_2.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值