dotnet学习笔记一 - 装箱拆箱,dotnet学习,otnet学习笔,tnet学习笔记,net学习笔记一,et学习笔记一-,t学习笔记一-装,学习笔记一-装箱,习笔记一-装箱拆 dotnet学习笔记一 - 装箱拆箱----编程资料集中营--八角123--bajiao123.com
编程资料集中营
 | 网站首页 | 文章中心 | 编程资料2 | 软件下载 | BT下载 | 八卦星闻 | 音乐在线 | 在线游戏 | 免费电影 | 进入问吧 | 
dotnet学习笔记一 - 装箱拆箱,转眼作程序员已经四年了,自己也算是这一行的老人了。回头看看,自己做过的东西不算少,从应用程序到内核驱动,从普通程序到Web应用,从Windows到Linux。市面上流行的开发工具语言也都用过,VC,VB,DELPHI,BCB,JBUILDER,ASP,JSP。不过扪心自问,那些是自己专长的呢?好像没有,找工作的时候也是项目作了不少,算得上精通的,好像没有。.,
您现在的位置: 编程资料,学习资料,c,c++,vc,vc++,java,jsp,j2ee,j2me,asp,php >> 文章中心 >> .NET 专区 >> NET 技术 >> 文章正文
【字体:
dotnet学习笔记一 - 装箱拆箱   进入问吧

本站地址:http://www.bajiao123.com

作者:admin    文章来源:本站    点击数:    更新时间:2007-6-7    

dotnet学习笔记一 - 装箱拆箱

转眼作程序员已经四年了,自己也算是这一行的老人了。回头看看,自己做过的东西不算少,从应用程序到内核驱动,从普通程序到Web应用,从Windows到Linux。市面上流行的开发工具语言也都用过,VC,VB,DELPHI,BCB,JBUILDER,ASP,JSP。不过扪心自问,那些是自己专长的呢?好像没有,找工作的时候也是项目作了不少,算得上精通的,好像没有。.NET以前也接触过,但是没有深入,前一段时间由于一段机缘,对.NET产生了喜欢之情,好强大,C#也是很规整的OO语言。再加上自己对WIN平台的多年的感情,决定投入到轰轰烈烈的.NET事业中去。书看过了需要消化和实践,自己感觉把理解的东西写出来是很好的一种消化方法,就萌生了把自己看得东西写成一套学习笔记的想法。这篇是开篇,抛砖引玉,希望各位.NET界的师兄元老们多多指点,希望和和我一样立志于学习应用.NET技术的朋友们一起讨论,一起提高。

.NET算是集现有开发平台语言之大成了,也提出了不少新概念。装箱(boxing)和拆箱(unboxing)应该是一个了。

.NET的所有类型都是由基类System.Object继承过来的,包括最常用的基础类型:int, byte, short,bool等等,就是说所有的事物都是对象。但这样造成了及底的效率,比如简单的两个数相加,bool取反都会导致从堆(Heap)中分配内存。怎样解决这个问题呢?.NET把类型分成了两类:值型和引用型。

值型在栈中分配内存,它们在声明的同时就初始化,以确保数据不为NULL。例如:

byte b = 33;

上边的声明就在栈中分配了8位的内存,并将变量初始化为8。.NET的值型包括枚举(enum),结构(structure)和基本类型(int, float, short等)。值型不需要Garbage Collection来回收占用的内存。超出了作用范围后,系统会自动释放。

引用型就完全类似于c++或者java中的类了,在堆中分配内存,初始化为null。引用型是需要Garbage Collection来回收内存的。

既然值型也是从System.Object中继承过来的,那么这样一句话就应该是合法的:

int n=3;

System.Object obj = n;

正如上面所说,n这个变量的内存应该是在栈中分配内存,而obj则应该在栈中分配内存。这时候系统都作了哪些工作呢?系统在堆中分配了一个对象obj,并将n的值复制给它。这就叫做装箱(boxing。这时候n 和obj就是两个没有关联的对象了,继续运行如下的代码:

obj = 9;

[1] [2] 下一页

   

进入问吧

本站地址:http://www.bajiao123.com

文章录入:admin    责任编辑:admin 
高级搜索
编程资料集中营