C#的装箱和拆箱

到目前为止,我们为大家讲解了有关C#语言中的值类型和引用类型数据。

这一节我们来了解一下C#语言类型系统提出的一个核心概念:装箱(boxing)和拆箱(unboxing)。装箱和拆箱机制使得在C#类型系统中,任何值类型、引用类型和object(对象)类型之间进行转换,我们称这种转化为绑定连接。

简单地说,有了装箱和拆箱的概念,对任何类型的值来说最终我们都可以看作是object类型。

4.3.1 装箱转换

4.3.2 拆箱转换

时间: 2024-11-07 11:46:01

C#的装箱和拆箱的相关文章

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

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

关于Visual C#装箱与拆箱的研究

visual 关于Visual C#装箱与拆箱的研究2004-09-15 作者: 出处: CSDN 在对这个问题展开讨论之前,我们不妨先来问这么几个问题,以系统的了解我们今天要探究的主题. 观者也许曾无数次的使用过诸如System.Console类或.NET类库中那些品种繁多的类.那么,我想问的是它们究竟源自何处?C#又是如何联系它们?有没有支持我们个性化扩展的机制或类型系统?又有哪些类型系统可供我们使用呢?如果我们这些PL们连这些问题都不知其然,更不知其所以然的话,C#之门恐怕会把我们拒之门外

Java装箱和拆箱详解

自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱.拆箱相关的问题. 以下是本文的目录大纲: 一.什么是装箱?什么是拆箱? 二.装箱和拆箱是如何实现的 三.面试中相关的问题 若有不正之处,请谅解和批评指正,不胜感激. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin0520/p/3780005.html 一.什么是装箱?什么是

简述C#装箱和拆箱

C#语言还是比较常见的东西,这里我们主要介绍C#装箱和拆箱,包括介绍调用该 TestAlias() 函数等方面. C#装箱和拆箱还是别名 许多 C#.NET 的书上都有介绍 int -> Int32 是一个装箱的过程,反之则是拆箱的 过程.许多其它变量类型也是如此,如:short <-> Int16,long <-> Int64 等.对于一般的程序员来说,大可不必去了解这一过程,因为这些C#装箱和拆箱的 动作都是可以自动完成的,不需要写代码进行干预.但是我们需要记住这些类型之

Java JDK之自动装箱和拆箱

基本数据(Primitive)类型的自动装箱(autoboxing).拆箱(unboxing)是自J2SE 5.0开始提供的功能.虽然为您打包基本数据类型提供了方便,但提供方便的同时表示隐藏了细节,建议在能够区分基本数据类型与对象的差别时再使用. autoboxing和unboxing 在Java中,所有要处理的东西几乎都是对象 (Object),例如之前所使用的Scanner是对象,字符串(String)也是对象,之后还会看到更多的对象.然而基本(Primitive)数据类型不是对象,也就是您

《Effective C#》之减少装箱和拆箱

为了便于文章的开展,首先介绍装箱(Boxing)和拆箱(Unboxing)这两个名词 ..Net的类型分为两种,一种是值类型,另一种是引用类型.这两个类型的本质 区别,值类型数据是分配在栈中,而引用类型数据分配在堆上.那么如果要把一 个值类型数据放到堆上,就需要装箱操作;反之,把一个放在堆上的值类型数据 取出来,则需要进行拆箱操作. 例如,对于如下简单的装箱和拆箱操作 语句. int i = 123; object obj = i;//Boxing if( obj is int ) int j

Effective C#原则17:装箱和拆箱的最小化

值类型是数据的容器,它们不具备多太性.另一方面就是说,.Net框架被设 计成单一继承的引用类型,System.Object,在整个继承关系中做为根对象存在 .设计这两种类型的目的是截然不同的,.Net框架使用了装箱与拆箱来链接两种 不同类型的数据.装箱是把一个值类型数据放置在一个无类型的引用对象上,从 而使一个值类型在须要时可以当成引用类型来使用.拆箱则是额外的从" 箱"上拷贝一份值类型数据.装箱和拆箱可以让你在须要使用 System.Object对象的地方使用值类型数据.但装箱与拆箱

[CLR via C#]5.3 值类型的装箱和拆箱

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

深入剖析Java中的装箱和拆箱

自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱.拆箱相关的问题. 一.什么是装箱?什么是拆箱? 在前面的文章中提到,Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有兴趣的朋友可以查阅相关资料.在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行: Integer i = new I