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
超级会员免费看
订阅专栏 解锁全文
17

被折叠的 条评论
为什么被折叠?



