作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有人可以解释一下我们执行装箱和拆箱时幕后实际发生的事情吗?我知道装箱是将值转换为引用类型,而拆箱则相反,但在装箱的背后,装箱的变量实际上存储在堆中,装箱和拆箱的基本用途是什么?
谢谢!
最佳答案
根本没有魔法,只是保持简单......
装箱是将值类型实例转换为引用类型实例的行为。
拆箱通过将对象(引用类型)转换回原始值类型来反转操作。
所以你必须了解value-type 和reference-type 之间的区别,还有 堆栈 和堆
值类型 - 内置类型,如 int、string、char、double 和 struct - 存储在称为 STACK
的内存块中引用类型 - 类、委托(delegate)、对象 - 存储在称为HEAP
现在,当您理解了上图后,让我们看一下真实、简单的代码。
int i = 1;
object O = i; // Box the int
int j = (int)O; // Unbox the int
关于c# - 装箱和拆箱的幕后花絮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6370873/
我是一名优秀的程序员,十分优秀!