19、C 中的类型转换、委托与事件详解

C# 中的类型转换、委托与事件详解

1. 类型转换基础:装箱与拆箱

在 C# 里,从任何结构体(或基本类型)转换为 object 类型是隐式转换,这其实就是我们之前接触过的装箱操作。例如:

Currency balance = new Currency(40, 0);
object baseCopy = balance;

当执行这个隐式转换时, balance 的内容会被复制到堆上的一个装箱对象中,并且 baseCopy 对象引用会指向这个对象。实际上,当我们定义 Currency 结构体时,.NET 框架会隐式提供一个隐藏的类,即装箱的 Currency 类,它包含与 Currency 结构体相同的字段,但它是引用类型,存储在堆上。这种情况在我们定义值类型(无论是结构体还是枚举)时都会发生,并且对于所有基本值类型(如 int double uint 等)都存在类似的装箱引用类型。在源代码中无法也没必要直接访问这些装箱类,但当值类型转换为 object 类型时,它们就在幕后发挥作用。当我们将 Currency 隐式转换为 object 时,会实例化一个装箱的 Currency 实例,并使用 Cur

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值