目录

  • 前言
  • 数组对于值类型
    • List不发生装箱与拆箱
    • ArrayList发生装箱与拆箱
  • 数组对于引用类型
    • List不发生装箱与拆箱
    • ArrayList不发生装箱与拆箱
  • 总结

前言

装箱:值类型转换为引用类型
拆箱:引用类型转换为值类型

引用类型:任何称为“类”的类型都是引用类型,使用class修饰

值类型:所有值类型都称为结构或枚举,使用struct或enum修饰

c#中的List()和动态数组ArrayList()有以下区别:
1.List()是指定数据类型,较为安全 如List和List,当数据类型不对时会报错,限制数据类型确保了数据安全。而ArrayList()在使用Add()方法存储值类型时要将值类型转换为引用类型且同时可以存储引用类型,如string,是不安全的。
2.动态数组ArrayList()容量可以进行数组的扩容和缩容,静态数组List()需要事先指定数组容量。

数组对于值类型

List不发生装箱与拆箱

List<int> l = new List<int>();for (int i = 0; i < n; i++){l.Add(i);   //不发生装箱int x=l[i]; //不发生拆箱}

ArrayList发生装箱与拆箱

  ArrayList a = new ArrayList();for (int i = 0; i < n; i++){a.Add(i);        //发生装箱int x=(int)a[i]; //发生拆箱}

数组对于引用类型

List不发生装箱与拆箱

 List<string> l2 = new List<string>();for (int i = 0; i < n; i++){l2.Add("X");       //不发生装箱string x = l2[i];  //不发生拆箱}

ArrayList不发生装箱与拆箱

 ArrayList a2 = new ArrayList();for (int i = 0; i < n; i++){a2.Add("X");              //不发生装箱 // 键盘F12 查看string为引用类型 add()装入ArrayList不发生装箱与拆箱string x = (string)a2[i]; //不发生拆箱}

总结

1.装箱与拆箱是针对于值类型,引用类型不发生装箱与拆箱
2.如果发生装箱与拆箱,加入时间测试,所需要消耗的时间是不发生装拆箱的大约15倍,极大的消耗了时间,应注意。

c#编程基础:装箱与拆箱相关推荐

  1. C#基础:理解装箱与拆箱

    .NET大牛之路 • 王亮@精致码农 • 2021.08.27 前面我们讲到 .NET 平台支持的两大数据类型:值类型和引用类型.值类型比引用类型更高效,因为它没有指针引用,不用分配在托管堆中,也不用 ...

  2. [019] C#基础:理解装箱与拆箱

    .NET大牛之路 • 王亮@精致码农 • 2021.08.27 前面我们讲到 .NET 平台支持的两大数据类型:值类型和引用类型.值类型比引用类型更高效,因为它没有指针引用,不用分配在托管堆中,也不用 ...

  3. 一、基础篇--1.1Java基础-包装类的装箱和拆箱

    包装类:java是典型的面向对象编程,但是八种基本数据类型并不支持面向对象编程.基本类型的数据不具备对象的特性,没有属性和方法.沿用它们只是为了迎合人类根深蒂固的习惯,并的确能简单.有效地进行常规数据 ...

  4. java基础第十一篇之Date、Math、自动装箱和拆箱

    Date类 表示一个瞬间,就是一个时刻 * * 构造方法: * public Date();//创建一个表示当前系统时间的Date对象 * public Date(long time);//毫秒值,距 ...

  5. java基础提升篇:深入剖析Java中的装箱和拆箱

    一.什么是装箱?什么是拆箱? 我们知道 Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有兴趣的朋友可以查阅相关资料.在Java SE5 ...

  6. [Java基础]自动装箱和拆箱

    自动装箱和拆箱:

  7. JAVA基础知识——方法的参数,特殊数据类型,装箱和拆箱...

    文章目录 一.方法的参数 二.特殊的数据类型 三.装箱和拆箱 三.Object 四.思维导图 一.方法的参数 我们常见的参数有: (1)基本数据类型作为参数 (2)可变参数(三个点-) (3)引用类型 ...

  8. java装箱_Java基础 【自动装箱和拆箱、面试题】

    JDK 1.5 (以后的版本)的新特性自动装箱和拆箱 1. 自动装箱:把基本类型转换为包装类类型 int a =10; Integer i = new Integer(a); Integer valu ...

  9. java可以用 lt =判断int吗_int 和 integer:装箱和拆箱的过程,会用到什么方法

    本文转载自[微信公众号:五角钱的程序员,ID:xianglin965],经微信公众号授权转载,如需转载与原文作者联系 原文标题<int 和 integer :装箱和拆箱的过程,会用到什么方法,你 ...

最新文章

  1. 2021年大数据ELK(十二):Elasticsearch编程(环境准备)
  2. 71 mac boook pro 无 gpu 下caffe 安装
  3. python开发环境和运行环境的区别_Django 开发环境与生产环境的区分详解
  4. clion卸载+clion连接docker编写trt程序
  5. Chrome浏览器最新改版 Android P预览版和桌面版界面有变化
  6. python安装时没有选path怎么办,环境变量是个啥? 没有勾选Add to Path怎么办?
  7. HDU 2819 Swap(二分图匹配)
  8. 计算机和信息系统安全保密管理规定,图文信息中心 计算机信息系统安全保密管理规定...
  9. 使用数字全通滤波器对IIR滤波器进行相位补偿
  10. docker swarm 部署 sentry9.1.2
  11. XP连接网络计算机未启动服务,网络不存在或尚未启动/以及局域网互访的解决办法...
  12. 通用汽车:导航地图的未来是基于区块链的
  13. 认识PV/PVC/StorageClass
  14. linux原生运行微信客户端,巧用 Docker 在 Linux 下 运行微信 PC 客户端
  15. Ubuntu安装时,U盘启动盘制作的坑
  16. 大师如何炼成 罗杰斯“不从众”的成功之道
  17. 使用MAC中碰到的各种问题
  18. 物业怎么发短信通知给业主?
  19. 强化学习-学习笔记11 | 解决高估问题
  20. java中的抽象到底是个啥?

热门文章

  1. 四年巨亏49亿,第四范式四闯IPO
  2. 基于JSP的毕业设计选题管理系统设计与实现
  3. segmented control的使用
  4. 涉网第一步,了解QQ空间(Q-Zone)
  5. 微信公众平台接口调试(微信订阅号自动回复接口)
  6. c语言英文课程带字幕,C语言实现中英文字幕合并
  7. 微软python视频教程字幕_11个最新国外python视频课程推荐(含中英文字幕,全网独家)...
  8. net.ipv4.tcp_max_tw_buckets=10
  9. vue3 中 vuex 两种方法使用 使用用用用用用用用
  10. 企业信用评级有哪些特性?