Types at Runtime

每种CLR中的对象都始于固定大小的头部,包含同步块索引与类型句柄两部分字段。通过类型句柄,可以实现向下转型和侧面转型。每个类型的实例在对象头部拥有相同的类型句柄值,而类型句柄指向的数据结构中包含了该类型的接口表和基类型指针。

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

Every object in the CLR begins with a fixed-size object header. The Object header has two fields. The first field of the object header is the sync block index. The second field of the object header is a handler to an opaque data structure that represents the object’s type. Every instance of a given type will have the same type handle value in its object header. To support down-casts and side-casts, CIL defines two opcodes: isinst and castclass. Both opcodes generate code that examines the object’s type handle to determine whether or not the object’s type is compatible with the request type.

Both isinst and castclass take advantage of the data structure referenced by RuntimeTypeHandle. The data structure (CORINFO_CLASS_STRUCT) contains several critical pieces of information. Each type has an interface table. This table contains one entry for each interface that the type is compatible with. The data structure also contains a pointer to the in-memory representation of the type’s base type.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值