Q
装箱和拆箱的概念
-4
A
回答
3
否你的例子中没有装箱,int只需要4个字节。只有在object
变量中手动存储值类型时才会出现拳击。
int i = 100; // No boxing
i = i + 1; // No boxing
object o = i; // Boxing
int j = (int)o; // Unboxing
0
理解拳击最简单的方法是了解一些细节如何值类型和引用类型中的CLI/CLR(框架的执行从一个C#或其他.NET编译器输出端上的层)的处理方式。特别是,需要认识到,对于每种值类型,框架还定义了一个相应的密封参考类型,该参考类型源自类System.ValueType
(继而从System.Object
继承),并具有与原始值类型(*)相同的公共和专用字段。值类型的存储位置始终为保持值类型,而引用类型始终为的存储位置保存引用类型。没有例外。如果尝试在需要引用类型的情况下使用值类型,系统将创建与该值类型相对应的引用类型的新实例,从要存储的值中复制公用和专用字段,以及然后使用新的实例。这被称为“拳击”。
请注意,尽管C#假装所有值类型都从System.Object
继承,但这样的语句依赖于“继承”的松散定义,该定义可能比有用的更容易混淆。如果一个定义语句“X
继承Y
”表示“的X
实例可以被隐式用作Y
实例”,然后拆箱值类型做不继承Object
,但它们的值可以被复制到装箱值类型的实例,其做。
相关问题
- 1. 自动装箱 - 编程概念
- 2. C中的装箱和拆箱#
- 3. 类别#isAssignable来源和拆箱/装箱
- 4. Java的自动装箱/拆箱wierdness
- 5. 谁来做自动装箱/拆箱?
- 6. 解析或自动装箱或拆箱
- 7. 使用采用新的与正常decleration和Integer(装箱/拆箱)
- 8. 如何在自己的课堂中实现装箱和拆箱?
- 9. 与一般类型和装箱/拆箱相互作用
- 10. 自动装箱和拆箱操作员超载
- 11. 是否强制转换为基类,包括装箱和拆箱
- 12. 装箱和拆箱,为什么输出都不是“System.Object”?
- 13. 拆箱vagrant箱失败
- 14. 将盒装值拆箱,然后立即重新装箱
- 15. 如何检测代码中的装箱/拆箱
- 16. 拆箱机制
- 17. Monad“拆箱”
- 18. 自动拆箱
- 19. 拳击拆箱
- 20. 拆箱问题
- 21. 拆箱功能
- 22. Scala和抽象型 “拆箱”
- 23. 整数枚举和拆箱
- 24. 拆箱和泛型方法
- 25. 封装概念
- 26. 当使用==为原始和装箱值,则自动装箱完成,或拆箱做
- 27. 如何识别装箱/拆箱斯卡拉
- 28. 哪里限制通用类型与Double Typeparam - 装箱/拆箱?
- 29. 对CLR中的装箱和拆箱操作进行了哪些性能改进?
- 30. 将包装类拆箱到var-arg
很好谢谢这么多 – 2012-04-01 07:20:55