装箱和拆箱-----------操作和概念

-------装箱和拆箱---------

数据类型按照存储 方式 可以分为值类型和引用类型,两者仍然可以相互转换,将值类型转换为引用类型的过程称为装箱。反之则为拆箱。

static void Main(string[] args){
   int i=123;

  object o=i ;   //装箱

  int i = (int)0 ;/、拆箱

}

  

--解析:因为i是值类型,所以只能够改变它自己的值,而无法修改应用类型object的类型,可以理解为创建一个object实例,并将i的值复制给这个object。

而拆箱时,被转换引用类型的数值必须能够装换为目标值类型

注意:在实际的开发中,应该尽量减少不必要的装箱和拆箱,二者存储方式不同,转换时性能损耗较大。

时间: 2024-08-13 02:04:43

装箱和拆箱-----------操作和概念的相关文章

再谈C#装箱和拆箱操作

1. 使用非泛型集合时引发的装箱和拆箱操作 看下面的一段代码: 1 2 3 4 5 6 7 8 var array = new ArrayList(); array.Add(1); array.Add(2); foreach (int value in array) { Console.WriteLine(“value is {0}”,value); } 代码声明了一个ArrayList对象,向ArrayList中添加两个数字1,2:然后使用foreach将ArrayList中的元素打印到控制台

装箱、拆箱操作发生在

通俗的讲,就是基本数据类型和包装类之间的转换.如: int  类型和  Integer  类的转换 基本数据类型转化成包装类是装箱  (如: int  -->  Integer). 包装类转化成基本数据类型就是拆箱  (如:Integer  -->  int). 包装类就是引用类型,基本数据类型就是值类型 通过 装箱 和 拆箱 操作,能够在值类型和引用类型中架起一做桥梁.换言之,可以轻松的实现值类型与引用类型的互相转换,装箱和拆箱能够统一考察系统,任何类型的值最终都可以按照对象进行处理. 装箱

F#中使用box和unbox函数进行装箱和拆箱操作

很多应用都会在界面中使用某种列表控件:用户可以选中.删除或重新排列列表中的项目.这些控件其实都是UITableView 对象,可以用来显示一组对象,例如,用户地址薄中的一组人名. 我们都知道ADO.NET提供了对数据库或外部数据源的数据访问接口,它本身实现了面向连接与面向无连接的数据访问方式.面向连接是以数据库连接为基础的,在打开数据库连接后,将数据访问指令送入数据库内执行后,利用游标来存取结果集的访问模式,优点是访问速度快,缺点则是必须建立连接,且会有锁定问题:面向无连接则是先以面向连接的方式

.NET中六个重要的概念:栈、堆、值类型、引用类型、装箱和拆箱 (转)

作者: Edison Chou  来源: 博客园  发布时间: 2014-09-03 15:59  阅读: 318 次  推荐: 2   原文链接   [收藏] 原文作者:Shivprasad koirala 英文原文:Six important .NET concepts: Stack, heap, value types, reference types, boxing, and unboxing 一.概述 本文会阐述六个重要的概念:堆.栈.值类型.引用类型.装箱和拆箱.本文首先会通过阐述当

.NET中的六个重要概念:栈、堆、值类型、引用类型、装箱和拆箱

内容导读 概述 当你声明一个变量背后发生了什么? 堆和栈 值类型和引用类型 哪些是值类型,哪些是引用类型? 装箱和拆箱 装箱和拆箱的性能问题 一.概述 本文会阐述六个重要的概念:堆.栈.值类型.引用类型.装箱和拆箱.本文首先会通过阐述当你定义一个变量之后系统内部发生的改变开始讲解,然后将关注点转移到存储双雄:堆和栈.之后,我们会探讨一下值类型和引用类型,并对有关于这两种类型的重要基础内容做一个讲解. 本文会通过一个简单的代码来展示在装箱和拆箱过程中所带来的性能上的影响,请各位仔细阅读. 二.当你

6个重要的.NET概念栈,堆,值类型,引用类型,装箱,拆箱

介绍 这篇文章将解释6个重要的概念:栈,堆,值类型,引用类型,装箱,拆箱.本文将会阐述当你声明一个变量时发生了什么并提前说明两个重要个概念:栈和堆.文章将围绕引用类型和值类型澄清一些重要基本信息.并通过一个简单的示例来演示装箱和拆箱引起的性能损失. 声明一个变量时发生了什么? 当你在.NET应用程序中声明了一个变量时,将会从RAM中分配一小块内存,在内存中存在三样东西:变量名称,数据类型和变量的值. 我们简单的说明下在内存中发生了什么,要知道变量在内存中的分配是取决于数据类型的.这里存在两种类型

【译】.NET中六个重要的概念:栈、堆、值类型、引用类型、装箱和拆箱

为何要翻译 一来是为了感受国外优秀技术社区知名博主的高质量文章,二来是为了复习对.NET技术的基础拾遗达到温故知新的效果,最后也是为了锻炼一下自己的英文读写能力.因为是首次翻译英文文章(哎,原谅我这个菜比,弱爆了!),所以肯定会有很多问题(有些语句理解不透彻,翻译出来也不通顺,还请不吝赐教),也请各位园友多多指正,谢谢! 关于原文作者 原文作者:Shivprasad koirala 原文地址:http://www.codeproject.com/Articles/76153/Six-import

值类型,引用类型,装箱,拆箱

值类型包括原类型(Sbyte.Byte.Short.Ushort.Int.Uint.Long.Ulong.Char.Float.Double.Bool.Decimal).枚举(enum).结构(struct),引用类型包括:类.数组.接口.委托.字符串等. 值型就是在栈中分配内存,在申明的同时就初始化,以确保数据不为NULL: 引用型是在堆中分配内存,初始化为null,引用型是需要GARBAGE COLLECTION来回收内存的,值型不用,超出了作用范围,系统就会自动释放! 值类型的变量包含自身

值类型的装箱和拆箱

在CLR中为了将一个值类型转换成一个引用类型,要使用一个名为装箱的机制. 下面总结了对值类型的一个实例进行装箱操作时内部发生的事: 1)在托管堆中分配好内存.分配的内存量是值类型的各个字段需要的内存量加上托管堆上的所有对象都有的两个额外成员(类型对象指针和同步块索引)需要的内存量. 2)值类型的字段复制到新的分配的堆内存. 3)返回对象的地址.现在,这个地址是对一个对象的引用,值类型现在是一个引用类型. 拆箱不是直接将装箱过程倒过来.拆箱的代价比装箱低得多.拆箱其实就是一个获取一个指针的过程,该