博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# tips ---值类型的装箱和拆箱
阅读量:6330 次
发布时间:2019-06-22

本文共 529 字,大约阅读时间需要 1 分钟。

装箱过程,如:

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

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

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

转载地址:http://ftfoa.baihongyu.com/

你可能感兴趣的文章
loadrunner-2-12日志解析
查看>>
2013年蓝桥杯省赛C/C++A组真题解析
查看>>
C# Memcached缓存
查看>>
iOS开发NSLayoutConstraint代码自动布局
查看>>
正则表达式
查看>>
mysql [ERROR] Can't create IP socket: Permission denied
查看>>
PBRT笔记(4)——颜色和辐射度
查看>>
CustomView的手势缩放总结
查看>>
linux复制指定目录下的全部文件到另一个目录中,linux cp 文件夹
查看>>
CentOS yum安装mysql
查看>>
OceanBase笔记1:代码规范
查看>>
[Algorithms] Longest Increasing Subsequence
查看>>
MAC下GitHub命令操作
查看>>
springboot之filter/listener/servlet
查看>>
uGUI练习 开篇
查看>>
【springboot】【redis】springboot+redis实现发布订阅功能,实现redis的消息队列的功能...
查看>>
关于Verilog HDL的一些技巧、易错、易忘点(不定期更新)
查看>>
用浮动IP实现高可用性,待续
查看>>
Strom(0.9.3)配置
查看>>
Python之Paramiko、前端之html学习_Day14
查看>>