美文网首页
C# 装箱与拆箱

C# 装箱与拆箱

作者: EinenschnenTag | 来源:发表于2017-08-09 18:16 被阅读0次

装箱与拆箱

·装箱的理解

  1. 装箱在值类型向引用类型转换时发生
  2. 拆箱在引用类型向值类型转换时发生

例如:
当值类型转 object 类型时,会在堆中开辟一块新的区域,将值复制过去。同时值的原本类型信息也会保留。

int a = 5; 
object obj = (object)a; // 将int转object,发生装箱
int b = (int)obj; // 从object转回原来的类型,解除装箱
装箱示例.png

而从 object 转回值类型时,则会将堆中的值压入栈中,解除装箱化。

拆箱示例.png

注:堆上的值在压栈时若类型不正确会抛出 InvalidCastException 异常。使用关键字 is 来判断类型是否兼容。

·尽量避免装箱

一般来说,堆上的空间利用,比栈的处理要沉重的多。值类型的优点就是在栈上使用而使程序性能向上。一旦发生装箱则这个优点就消失了,所以要避免装箱的发生。

  • 指明具体的类型
  • 使用模板

相关文章

  • Unity笔试题

    1·描述一下C#中的装箱和拆箱,下面哪些地方会发生装箱或者拆箱? a) int a= 10; b) Object ...

  • 三 常用API第二部分——第六节 包装类

    1、包装类的概念 2、装箱与拆箱 装箱:基本类型-->包装类对象拆箱:包装类对象-->基本类型 3、自动装箱与拆箱...

  • 10.18学习总结

    今天学习完了c#语言基础,包括类型转换(Parse和To string),装箱与拆箱(值类型和引用类型) ,...

  • C# 装箱与拆箱

    装箱与拆箱 ·装箱的理解 装箱在值类型向引用类型转换时发生 拆箱在引用类型向值类型转换时发生 例如:当值类型转 o...

  • c# 装箱与拆箱

    装箱 表示 先在堆里开辟一块空间 然后把值类型的内容拷贝一份放到 开辟的空间里 声明的对象指向 开辟的空间 拆表示...

  • 装箱与拆箱详解笔记

    1、什么是自动装箱与拆箱 //自动装箱Integer integer = 100;//自动拆箱int i = in...

  • (Note) Java-autoBoxing-unBoxing

    0. Thanks Java中的自动装箱与拆箱 Java 自动装箱与拆箱的实现原理 Integer.java 1....

  • jdk5新特性

    自动装箱与拆箱 // 自动装箱:值转对象Integer n = 1;// 自动拆箱:对象转值int m = n; ...

  • Unity及C#优化

    1、C# (1)避免装箱拆箱; (2)避免高消耗API的频繁调用; 例如:FindObjectsOfType、Ca...

  • 【C#】装箱与拆箱整理

    概念 装箱和拆箱是一个抽象的概念,由于C#中所有的数据类型都是由基类System.Object继承而来的,利用装箱...

网友评论

      本文标题:C# 装箱与拆箱

      本文链接:https://www.haomeiwen.com/subject/jzpqrxtx.html