【发布时间】:2016-05-22 06:22:08
【问题描述】:
我是编程新手,
根据MSDN,
装箱是将值类型转换为类型对象或此值类型实现的任何接口类型的过程。当 CLR 将值类型装箱时,它会将值包装在 System.Object 中并将其存储在托管堆中。拆箱从对象中提取值类型。拳击是隐含的;拆箱是明确的。
我知道我们可以在数组列表中存储任何对象,因为system.object 是所有类型的基础。装箱和拆箱发生在数组列表中。我同意这一点。
装箱和拆箱会在数组中进行吗?因为我们可以像下面这样创建对象数组
object[] arr = new object[4] { 1, "abc", 'c', 12.25 };
我对在这样的数组中进行装箱和拆箱的理解是否正确?
【问题讨论】:
-
这里没有装箱,因为您的数组已经是对象类型。在这种情况下没有什么可以装箱的。
-
@Zohar - 但是对象类型是数组列表的默认类型,但是装箱和拆箱发生在那里
-
你为什么说这里没有拳击,因为这里的类型是对象,拳击应该发生吧?
-
@ZoharPeled 你确定吗?那么值类型是如何存储在对象中的呢?在这种特殊情况下,您需要为值 1、'c' 和 12.25 进行 3 次装箱操作
-
阅读 Yuval 的回答,这就是我的意思 - 数组本身不会导致装箱,将整数、字符串、字符和浮点数分配到对象中当然是装箱,而是一个明确的装箱。