前言

  • C#数据类型
  • 什么是装箱、拆箱
  • 产生装箱、拆箱的举例
  • 总结

前言

C# 是一种通用、面向对象的编程语言,由微软(Microsoft)开发的,属于强类型语言,变量需先声明数据类型、然后给变量赋初值,最后才能使用该变量。否者程序直接报错、提示。

一、c#数据类型

在c#中数据类型分为值类型、引用类型。

  1. 值类型有:int、double、bool、decimal、enum、struct等,数据存放在栈stack中。
  2. 引用类型有:string、数组、自定义类、object、接口等,数据存放在堆heap中,地址存放在栈stack中。

二、什么是装箱、拆箱

简单来说:封箱(boxing)是把值类型数据,转换为引用类型。拆箱(unboxing)是把引用类型数据,转换为值类型。通过装箱和拆箱操作,可以实现值类型与引用类型的互相转换,最终能够实现任何类型的值,可以按照对象进行处理。

程序中发生装箱和拆箱先决条件:

1. 发生类型转换。

2. 存在继承关系。

三、产生装箱、拆箱的举例

intiVal = 1;//定义int型变量

object obVal;  //定义object型变量

obVal= iVal; //将int型转成object型

//根据里氏转换原则,可以把派生类赋值给基类

//这里出现了装箱,额外耗费cpu和内存资源

Console.WriteLine("这是装箱,是将值类型,转换为引用类型");

iVal = (int)obVal; //将object型转成int型

//根据里氏转换原则,当基类中装的是派生类,可以强转

//这里出现了拆箱,额外耗费cpu和内存资源

Console.WriteLine("这是拆箱,是将引用类型,转换为值类型");

  • 总结
  1. 拆箱和装箱过程正好相反,有发生的先决条件。
  2. 拆箱和装箱过程符合里氏转换原则。
  3. 装箱操作和拆箱操作,是要额外耗费cpu和内存资源的,在进行大量的计算时,要避免装箱、拆箱,否则严重影响程序的效率。
  4. 微软在c# 2.0之后,引入了泛型概念,来减少装箱操作和拆箱操作引起的消耗。

理解C#中装箱和拆箱的概念相关推荐

  1. 如何理解Java中的自动拆箱和自动装箱?

    小伟刚毕业时面的第一家公司就被面试官给问住了,记忆尤深啊- 如何理解Java中的自动拆箱和自动装箱? 自动拆箱?自动装箱?什么鬼,听都没听过啊,这-这-知识盲区- 回到家后小伟赶紧查资料,我透,这不就 ...

  2. 如何理解Java自动装箱_如何理解Java中的自动拆箱和自动装箱?

    如何理解Java中的自动拆箱和自动装箱? 自动拆箱?自动装箱?什么鬼,听都没听过啊,这...这..知识盲区... 回到家后小伟赶紧查资料,我透,这不就是问基本类型跟封装类型吗,面试官整啥名词呢... ...

  3. 为什么我们需要在C#中装箱和拆箱?

    本文翻译自:Why do we need boxing and unboxing in C#? Why do we need boxing and unboxing in C#? 为什么我们需要在C# ...

  4. java有装箱和拆箱吗_Java中装箱和拆箱,你真的都懂么?

    在给部门做分享的时候,一位同学提问说一直没搞明白Java的装箱和拆箱,让我给讲解下,所以才有了下面这篇文章: 本次文章根据PPT分享整理而成,会有5点: 1.什么是装箱和拆箱? 2.基本数据类型和包装 ...

  5. java中装箱和拆箱的详细使用(详解)

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

  6. 深入理解C#的装箱和拆箱

    装箱和拆箱是值类型和引用类型之间相互转换是要执行的操作.  1. 装箱在值类型向引用类型转换时发生 2. 拆箱在引用类型向值类型转换时发生 光上述两句话不难理解,但是往深处了解,就需要一些篇幅来解释了 ...

  7. C#中装箱和拆箱的作用 the effection of boxing and unboxing

    值类型和引用类型放在不同的地方,在互相转换的时候需要把数据搬过来搬过去,这就是装箱和拆箱了. 在于类型的转换 例如一个函数要处理传入的参数,但是这个参数可能是A.C.E这三种类型的类,那么一般做法就是 ...

  8. Java中装箱与拆箱

    JDK5.0 之后提供了一种新特性:自动装箱拆箱. 既然是装拆箱,那么我们先来看看这个所谓的"箱": java中的8种基本数据类型都有与之对应的封装类(封装类就是所谓的箱).分别是 ...

  9. 装箱与拆箱的概念及意义

    1.   装箱和拆箱是一个抽象的概念 2.   装箱是将值类型转换为引用类型 :拆箱是将引用类型转换为值类型     利用装箱和拆箱功能,可通过允许值类型的任何值与Object 类型的值相互转换,将值 ...

最新文章

  1. pycharm用爱发电
  2. 路要怎么走?关于程序员成长的一点思考
  3. 达内python人工智能19年大纲_2019年想转行人工智能的同学们机会来了
  4. [补] windows C socket编程——大物实验预约
  5. php正则大小写字母,php 常见email,url,英文大小写,字母数字组合等正则表达式详解...
  6. 【基于注解方式】Spring整合Kafka
  7. k8s挂载目录_K8S中挂载目录引发的血案!
  8. 参考文献格式字号字体_干货分享|同学,你的论文格式有点不太对啊!
  9. 头发mod_《巫师3》:新MOD为三个大妹子,4K超清贴图看过来
  10. html桌面程序实例spark,【01】Spark 简单实例
  11. Visual C++ 2005 系列课程学习笔记-6
  12. 产品 电信nb接口调用_NB-IOT开发流程---基于中国电信物联网平台实现平台对接
  13. MAX30102血氧模块的原理及编程
  14. zedBoard USB转串口驱动下载问题
  15. C64x的软件优化方法
  16. 【牛客】CPU的运算速度与许多因素有关,下面______是提高速度的有效措施?
  17. 数据技术之Hadoop(HFDS文件系统)
  18. PHP学习笔记(一)--基础知识
  19. 输出指定要求的回文日期与字符串拼接
  20. [FAQ09811][NW]如何区分MNO和MVNO

热门文章

  1. Carson带你学Android:RxJava过滤操作符
  2. 经典问题----倒水(详细解析)
  3. Visual Studio Code安装教程(超详细)
  4. ORACLE-使用DBCA创建数据库
  5. window系统生成多个ssh
  6. ipynb转python(.py)
  7. 人力资源管理案例选读【3】
  8. 第19篇 基础(十九)详解QVector(数组)
  9. 泽塔云荣膺“中国高科技高成长50强”,成唯一上榜超融合企业
  10. 2017算法实习生应聘经验总结