C#语法学习装箱(box)和拆箱(unbox)


/*
* Created by SharpDevelop.
* User: Administrator
* Date: 2008/9/4
* Time: 上午 12:10
*
*/
using System;
class Test
{
static void Main()
{
int i=123;//第一次裝箱
object o=i;
i=456;
//這里由於使用了+號也就會調用字符串的
//String.Concat(Object,Object,Object);
//這也就讓下面的都需要轉換成Object類型
Console.WriteLine(i //第二次裝箱
+ ", " +
(int)o);//這里先發生一次拆箱,再接著發生第三次裝箱
}
}
//問題:上面的程序會進行幾次裝箱和拆箱.
//3次裝箱,1次拆箱.
//這里也就告訴我們在寫程序的時候不注意就進行裝箱和拆箱的操作
//為了提高程序的性能我們可以裝輸出語句改為下面的:
//Console.WriteLine(i + ", " + o);輸出結果一致.這時候進行了兩次裝箱
//Console.WriteLine(i.ToString() + ", " + o);輸出結果一致.這時候進行了一次裝箱

时间: 2024-10-18 05:08:19

C#语法学习装箱(box)和拆箱(unbox)的相关文章

浅析自动装箱、自动拆箱

浅析自动装箱.自动拆箱 我们知道,在java中有基本类型和类类型,基本类型有:char.byte.short.int.double.float.long.boolean这8种,在需要将基本类型打包成对象来进行操作的时候,这时,就用到了打包这一操作,该操作的自动行为就叫做自动装箱.自动拆箱. package demo; public class IntegerDemo { public static void main(String[] args) { int data1=10; int data

Java学习之自动装箱和自动拆箱源码分析

自动装箱(boxing)和自动拆箱(unboxing) 首先了解下Java的四类八种基本数据类型 基本类型 占用空间(Byte) 表示范围 包装器类型 boolean 1/8 true|false Boolean char 2 -128~127 Character byte 1 -128~127 Byte short 2 -2ˆ15~2ˆ15-1 Short int 4 -2ˆ31~2ˆ31-1 Integer long 8 -2ˆ63~2ˆ63-1 Long float 4 -3.403E38

jdk1.5新特性4之自动装箱和自动拆箱与享元模式

  一 基本概念 1 装箱 把基本类型用它们相应的引用类型包装起来,使其具有对象的性质.如int-->Integer,float-->Float. 自动装箱 Integer a = 100,编译器调用的是static Integer valueOf(int i)                2 拆箱 和装箱相反,将引用类型的对象简化成值类型的数据 自动拆箱 int b = new Integer(100); int c = a +2;   二 是否相等 例一 Integer a = new

装箱(boxing)和拆箱(unboxing)

1. 装箱(boxing)   用于把一个值类型转换为引用类型 int i = 20;object o = i; //隐式转换   2. 拆箱(unboxing)   将以前装箱的值类型转换回引用类型   int i = 20;object o = i;int j = (int)o;    

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

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

JAVA 入坑教程 | 章节九 详解java的装箱和拆箱

简单点,代码的方式简单点,装逼的方式请省略,我们又不是演员,别设计那些情节 什么是装箱?什么是拆箱?代码如何展示? 装箱过程是怎样的?拆箱过程是怎样的? 有问题可加入安卓QQ群: 246231638 装箱和拆箱的概念 简单点,代码的方式简单点,装逼的方式请省略,我们又不是演员,别设计那些情节: //自动装箱 Integer total = 9999; //自动拆箱 int totalprim = total; 装箱:就是自动将基本数据类型转换为包装器类型: 拆箱:就是自动将包装器类型转换为基本数

java自动装箱拆箱深入剖析_java

这个是jdk1.5以后才引入的新的内容,作为秉承发表是最好的记忆,毅然决定还是用一篇博客来代替我的记忆: java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装成为装箱,解包装称为拆箱): 其实按照我自己的理解自动装箱就可以简单的理解为将基本数据类型封装为对象类型,来符合java的面向对象:例如用int来举例: 复制代码 代码如下: //声明一个Integer对象 Integer num = 10; //以上的声明就是用到了自动的装箱:解析为 Integer nu

java 自动装箱拆箱实现方法

java 自动装箱拆箱实现方法 什么是自动装箱拆箱 基本数据类型的自动装箱(autoboxing).拆箱(unboxing)是自j2se 5.0开始提供的功能.  一般我们要创建一个类的对象的时候,我们会这样: class a = new class(parameter); 当我们创建一个integer对象时,却可以这样: integer i = 100; (注意:不是 int i = 100; ) 实际上,上面那句代码相当于:integer i = new integer(100); 此即基本

C#的装箱和拆箱

到目前为止,我们为大家讲解了有关C#语言中的值类型和引用类型数据. 这一节我们来了解一下C#语言类型系统提出的一个核心概念:装箱(boxing)和拆箱(unboxing).装箱和拆箱机制使得在C#类型系统中,任何值类型.引用类型和object(对象)类型之间进行转换,我们称这种转化为绑定连接. 简单地说,有了装箱和拆箱的概念,对任何类型的值来说最终我们都可以看作是object类型. 4.3.1 装箱转换 4.3.2 拆箱转换