C# tips ---值类型的装箱和拆箱

装箱过程,如:
myStruct myobj= new myStruct();
object baseobj =myobj;

在上述隐式转换中,myobj的内容被复制到堆上,放在一个装箱的对象上,baseobj对象引用设置为该对象。
让我们来看看在后台发生什么吧:实际上在最初定义myStruct结构时,.NET FX 隐式地提供另一个(隐式的)类,即装箱的myStruct类,它包括与myStruct结构相同的所有字段,但却是一个引用类型,存储在堆上。无论这个值类型是一个结构,还是一个枚举,定义它时都存在类似的装箱引用类型,相对应于所有的基本值类型,如 int,double和unit。不能也不必在代码中直接编程访问这些装箱类型,但在把一个值类型转化为object时,他们是在后台工作的对象。在隐式的把myStruct转换为object时,会实例化一个装箱的myStruct实例,并用myStruct结构中的所有数据进行初始化。

拆箱跟装箱类似,转换的过程是把自己装箱的myStruct对象的字段复制到一个新的myStruct结构中。

在使用装箱和拆箱时,这两个过程都把数据复制到新装箱和拆箱的对象上。这样,对装箱对象的操作就不会影响原来值类型的内容了。

posted @ 2007-09-07 00:42 Freesc Huang 阅读(209) 评论(0) 编辑
<2007年9月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

公告

These postings are provided "AS IS" with no warranties
and confer no rights.


Locations of visitors to this page

Blog Keywords
Embedded System,Visual Studio,.Net Framework,.Net Compact Framework,.Net Micro Framework,Windows Mobile,Windows Embedded CE,Emulator,WCF,CLR,Design & Pattern,C/C++,C#,Matlab,Algorithms
昵称:Freesc Huang
园龄:4年11个月
粉丝:32
关注:4

统计

  • 随笔 - 197
  • 文章 - 0
  • 评论 - 840

搜索

 

随笔分类(227)

随笔档案(197)

Blogs

Link

积分与排名

最新评论

阅读排行榜

评论排行榜

推荐排行榜