引用类型、数值类型及装箱
2009-12-18 17:44:06 来源:WEB开发网核心提示:一、类型分类: 1:值类型, (1)表示变量引用的位置就是值在内存中实际存储的位置;表一个变量的值赋给另一个变量,引用类型、数值类型及装箱,会在新变量所在的位置创建原始变量的值的一个内存副本,它不能引用与第一个变量相同的内存位置,说明:box对性能有很大的影响,因为要程序要注意有很多不容易被发现的大量的装箱和拆箱的操作
一、类型分类:
1:值类型,
(1)表示变量引用的位置就是值在内存中实际存储的位置;表一个变量的值赋给另一个变量,会在新变量所在的位置创建原始变量的值的一个内存副本,它不能引用与第一个变量相同的内存位置,
所以更改其中一个不会影响到另一个变量的值;
(2)将一个值类型传给一个方法,也会生成一个内存的副本,在方法的内部对参数进行修改,并不会影响到原始调用者的原始值。
值类开存储在称为”栈“的内存空间里面。
2:引用类型
(1)引用类型指向的是数据存储的位置,也就是存放的是一个内存地址,从这个内存地址才能找到真正的数据,因此,在访问数据时,先从引用变量中取得所要的内存位置,再跳转到内存位置取得
取得真正的数据;引用类型指向的内存区域叫做”堆“,也就是存储真正数据的位置;
(2)一个引用类型变量赋值给另一个引用类型变量时,只会多出一个地址的内存副本,而二者指向的同一个在”堆“中真正的数据并不会变化;所以两个变量可以引用相同数据,故其中一个变量改变
也会使另一个变量引用的数据改变。
说明:除了string object,所有C#的基本数据类型都是值类型。
二 装箱(boxing)
1,当一个值类型转换为实现的某个接口或者对象时,这个转型的过程称为”装箱“。分为以下三个步骤:
(1) 首先在”堆“分配好所要的内存,它将用来存放值类型的数据以及少许的额外开销(方法表指针等);
(2) 接着发生一次内存复制,把”栈“上值类型的数据复制到”堆“上分配好的位置上;
(3) 最后,对象或接口引用得到更新,指向堆上的位置。
2,相反的转化过程叫做”拆箱“(unboxing),
3,说明:box对性能有很大的影响,因为要程序要注意有很多不容易被发现的大量的装箱和拆箱的操作。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhuoruling/archive/2009/12/17/5028337.aspx
1:值类型,
(1)表示变量引用的位置就是值在内存中实际存储的位置;表一个变量的值赋给另一个变量,会在新变量所在的位置创建原始变量的值的一个内存副本,它不能引用与第一个变量相同的内存位置,
所以更改其中一个不会影响到另一个变量的值;
(2)将一个值类型传给一个方法,也会生成一个内存的副本,在方法的内部对参数进行修改,并不会影响到原始调用者的原始值。
值类开存储在称为”栈“的内存空间里面。
2:引用类型
(1)引用类型指向的是数据存储的位置,也就是存放的是一个内存地址,从这个内存地址才能找到真正的数据,因此,在访问数据时,先从引用变量中取得所要的内存位置,再跳转到内存位置取得
取得真正的数据;引用类型指向的内存区域叫做”堆“,也就是存储真正数据的位置;
(2)一个引用类型变量赋值给另一个引用类型变量时,只会多出一个地址的内存副本,而二者指向的同一个在”堆“中真正的数据并不会变化;所以两个变量可以引用相同数据,故其中一个变量改变
也会使另一个变量引用的数据改变。
说明:除了string object,所有C#的基本数据类型都是值类型。
二 装箱(boxing)
1,当一个值类型转换为实现的某个接口或者对象时,这个转型的过程称为”装箱“。分为以下三个步骤:
(1) 首先在”堆“分配好所要的内存,它将用来存放值类型的数据以及少许的额外开销(方法表指针等);
(2) 接着发生一次内存复制,把”栈“上值类型的数据复制到”堆“上分配好的位置上;
(3) 最后,对象或接口引用得到更新,指向堆上的位置。
2,相反的转化过程叫做”拆箱“(unboxing),
3,说明:box对性能有很大的影响,因为要程序要注意有很多不容易被发现的大量的装箱和拆箱的操作。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhuoruling/archive/2009/12/17/5028337.aspx
- ››引用 Symbian常见panic
- ››引用类型、数值类型及装箱
- ››数值模拟实时三维可视化的C#与OpenGL实现
- ››引用Amazon图书信息2 ——Word 2007高级应用(十八...
- ››引用Amazon 图书信息1——Word 2007高级应用(十七...
- ››引用.NET Framework Class Library 在线文档2——...
- ››引用.NET Framework Class Library 在线文档1——...
- ››引用一个能发email的JavaMail的例子
- ››引用造型protected和private的困惑
- ››引用外部类对象
- ››引用 造型 protected和private的困惑
- ››引用已定义过的包
更多精彩
赞助商链接