.Net中的装箱拆箱

说到装箱与拆箱,那就要简要的概括下什么是装箱拆箱,

装箱:其实就是把值类型转换为引用类型。

拆箱:其实就是把引用类型转换为值类型。

值类型:一般来说包括   int  char bool double datetime等等这些,值类型存放在栈里面

引用类型:引用类型包括  object  class  Interface Delegate  string arry  dynamic,引用类型是存放在堆里的,占用的内存地址一般是连续的。

//装箱就是把值类型转换为引用类型

int i = 12;

object obj = i;

//拆箱就是把引用类型转换为值类型

i = (int) obj;

//装箱与拆箱是比较消耗性能的,能避免的尽量避免发生这样的行为。

string str3 = "123";

int i4 = 4;

Console.WriteLine(str3+i4);//这种装箱行为会影响效率,如何避免的,下面的方法

Console.WriteLine(str3+i4.ToString());//这是一种方法,可以提高点效率。

Console.ReadKey();

时间: 2024-10-12 08:17:46

.Net中的装箱拆箱的相关文章

C#中的装箱拆箱

在C#中,经常需要把值类型和引用类型相互转换. 首先明确两条法则: 1.引用类型总是被分配到"堆"上. 2.值类型总是分配到它声明的地方: a.作为引用类型的成员变量分配到"堆"上 b.作为方法的局部变量时分配到"栈"上 1. 装箱在值类型向引用类型转换时发生,执行装箱操作时要在堆上申请内存空间,并将堆栈上的值类型数据复制到申请的堆内存空间上 2. 拆箱在引用类型向值类型转换时发生. //装箱 object obj = 1; //拆箱 objec

NET中的类型和装箱/拆箱原理

谈到装箱拆箱,DebugLZQ相信给位园子里的博友一定可以娓娓道来,大概的意思就是值类型和引用类型的相互转换呗---值类型到引用类型叫装箱,反之则叫拆箱.这当然没有问题,可是你只知道这么多,那么DebugLZQ建议你花点时间看看楼主这篇文章,继续前几篇博文的风格--浅谈杂侃. 1. .NET中的类型 为了说明装箱和拆箱,那首先必须先说类型.在.NET中,我们知道System.Object类型是所有内建类型的基类.注意这里说的是内建类型,程序员可以编写不继承子自System.Object的类型,这

读书笔记-C#中装箱拆箱性能

前言 最近在看王涛大神的<你必须知道的.NET(第二版)>一书,嗯,首先膜拜一下…. 在书中的第五章-品味类型中,对装箱与拆箱一节感触很深,概念本身相信每一个程序猿都不陌生,装箱是将值类型转换为引用类型 ,拆箱是将引用类型转换为值类型(ps:不小心又背了一下书),也知道装箱与拆箱过程中将带来性能上的问题,但是在实际的项目中往往会忽略这个问题,将可能带来极大的效率上的问题.问题有多大,反正我哭过. 简单对比测试 在工作之余写了个简单的测试例子,以HashTable.ArraryList.List

c#中装箱拆箱性能测试

c#中装箱拆箱性能测试 首先了解一下关于时间的换算: 1秒=1000毫秒: 1毫秒=1000微秒: 1微秒=1纳秒 而1毫秒=10000ticks:所以1ticks=100纳秒=0.1微秒 ticks这个属性值是指从0001年1月1日12:00:00开始到此时的以ticks为单位的时间,就是以ticks表示的时间的间隔数. 使用DateTime.Now.Ticks返回的是一个long型的数值. 然后上代码: using System; using System.Collections; usin

WPF中多线程统计拆箱装箱和泛型的执行效率

WPF中多线程统计拆箱装箱和泛型的执行效率,使用的知识点有泛型.多线程.委托,从例子中可以看到使用泛型的效率至少提升2倍 MainWindow.xaml <Window x:Class="Box.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xa

WPF中多线程统计拆箱装箱和泛型的运行效率

WPF中多线程统计拆箱装箱和泛型的执行效率.使用的知识点有泛型.多线程.托付.从样例中能够看到使用泛型的效率至少提升2倍 MainWindow.xaml <Window x:Class="Box.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xa

[Java5新特性]自动装箱/拆箱

自动装箱/拆箱概述 Java中具有基本类型(int,double,float,long,boolean,char,byte,short)和基本类型包装类(Integer,Double,Float,Long,Boolean,Char,Byte,Short),我们实现基本类型与包装类之间的转换基本有两种方式: 一种为JDK5之前的方式,比如Integer i = Integer.valueof(5);(这里5为基本类型int,Integer包装类利用valueof()方法将其转换为Integer类型

C#装箱拆箱

.       装箱和拆箱是一个抽象的概念 2.       装箱是将值类型转换为引用类型 :拆箱是将引用类型转换为值类型        利用装箱和拆箱功能,可通过允许值类型的任何值与Object 类型的值相互转换,将值类型与引用类型链接起来 例如: int val = 100; object obj = val; Console.WriteLine (“对象的值 = {0}", obj); 这是一个装箱的过程,是将值类型转换为引用类型的过程 int val = 100; object obj

Java 装箱 拆箱

Java 自动装箱与拆箱 ??什么是自动装箱拆箱 基本数据类型的自动装箱(autoboxing).拆箱(unboxing)是自J2SE 5.0开始提供的功能. 一般我们要创建一个类的对象的时候,我们会这样: Class a = new Class(parameter); 当我们创建一个Integer对象时,却可以这样: Integer i = 100; (注意:不是 int i = 100; ) 实际上,执行上面那句代码的时候,系统为我们执行了:Integer i = new Integer(1