装箱和拆箱是值类型和引用类型之间相互转换是要执行的操作。
1. 装箱在值类型向引用类型转换时发生
2. 拆箱在引用类型向值类型转换时发生
光上述两句话不难理解,但是往深处了解,就需要一些篇幅来解释了。
我们先看装箱时都会发生什么事情,下面是一行最简单的装箱代码
复制代码 代码如下:
object obj = 1;
这行语句将整型常量1赋给object类型的变量obj; 众所周知常量1是值类型,值类型是要放在栈上的,而object是引用类型,它需要放在堆上;要把值类型放在堆上就需要执行一次装箱操作。
这行语句的IL代码如下,请注意注释部分说明:
复制代码 代码如下:
.locals init (
[0] object objValue
) //以上三行IL表示声明object类型的名称为objValue的局部变量
IL_0000: nop
IL_0001: ldc.i4.s 9 //表示将整型数9放到栈顶
IL_0003: box [mscorlib]System.Int32 //执行IL box指令,在内存堆中申请System.Int32类型需要的堆空间
IL_0008: stloc.0 //弹出堆栈上的变量,将它存储到索引为0的局部变量中
以上就是装箱所要执行的操作了,执行装箱操作时不可避免的要在堆上申请内存空间,并将堆栈上的值类型数据复制到申请的堆内存空间上,这肯定是要消耗内存和cpu资源的。我们再看下拆箱操作是怎么回事:
请看下面的C#代码:
复制代码 代码如下:
object objValue = 4;
int value = (int)objValue;
上面的两行代码会执行一次装箱操作将整形数字常量4装箱成引用类型object变量objValue;然后又执行一次拆箱操作,将存储到堆上的引用变量objValue存储到局部整形值类型变量value中。
同样我们需要看下IL代码:
复制代码 代码如下:
.locals init (
[0] object objValue,
[1] int32 'value'
) //上面IL声明两个局部变量object类型的objValue和int32类型的value变量
IL_0000: nop
IL_0001: ldc.i4.4 //将整型数字4压入栈
IL_0002: box [mscorlib]System.Int32 //执行IL box指令,在内存堆中申请System.Int32类型需要的堆空间
IL_0007: stloc.0 //弹出堆栈上的变量,将它存储到索引为0的局部变量中
IL_0008: ldloc.0//将索引为0的局部变量(即objValue变量)压入栈
IL_0009: unbox.any [mscorlib]System.Int32 //执行IL 拆箱指令unbox.any 将引用类型object转换成System.Int32类型
IL_000e: stloc.1 //将栈上的数据存储到索引为1的局部变量即value
拆箱操作的执行过程和装箱操作过程正好相反,是将存储在堆上的引用类型值转换为值类型并给值类型变量。
装箱操作和拆箱操作是要额外耗费cpu和内存资源的,所以在c# 2.0之后引入了泛型来减少装箱操作和拆箱操作消耗。
相关推荐:
ChatGPT回答问题,网页无法线下滚动?解决方案轻松get!,谷歌AI铃声
360关键:打造全方位安全保护,守护您的数字世界,ai乘bi
URL站长的崛起:打造高效网站运营的秘密武器,网站建设费用计算依据
什么是seo技术,什么是seo及seo的作用 ,AI倒放仓鼠
GPT怎么收费?揭秘AI技术的定价与价值,ai报考高考
ChatGPT:基于Transformer技术的语言模型,开创人工智能未来,AI独战OK
AI+写文章:开启智能创作新时代
《权重参谋:让您的网站轻松登顶搜索引擎的秘密武器》,设计微信社群私域营销推广简案
seo网站排名关键词优化,seo网站关键词优化怎么做 ,ai回廊
什么是seo网站推广,什么是seo网站推广 ,ai酷男人
为什么选择收录网站是企业在线营销的必备策略,全网营销与推广
SEO地位:如何提升你的网站排名与曝光度,抢占市场先机,微营销网络推广
GPT优化:让你的工作与生活更高效、更智能,Ai__79
seo渠道优化是什么,seo渠道推广怎么做 ,ai121333
SEO排序:如何让你的网页在搜索引擎中脱颖而出,平谷抖音seo推广招聘
ChatGPT页面不自动显示最新消息:如何解决这一困扰,提升使用体验?,斑马ai幼儿百度云网盘
ChatGPT为什么打不开了?揭秘背后的原因与解决办法,ai业务后端
怎么用AI生成文章?全新写作方式的揭秘与应用指南
揭开“好的AI软件”背后的秘密:让生活和工作更智能的利器
AI一键生成文章免费版:颠覆写作新体验
SEO优化:提升网站流量的终极指南,揭阳网站快速推广
ChatGPT服务异常:为何影响到你的工作和生活?如何有效解决?,ai怎么保持圆角不变
ChatGPT无法加载?检查您的网络设置并尝试重启ChatGPT,解决您的使用困扰!,ai光晕制作
AI免费文章生成器:轻松创作高质量内容的终极工具
Chatget免费网站版无需登录,畅享无限对话体验!,工业 Ai 视觉检测
ChatGPT画布打不开?如何解决这一常见问题?,Ai怎么储存为Ai格式在桌面
ChatGPT发生故障,背后隐藏着哪些不为人知的原因与挑战?,硬件ai和软件ai
ChatGLM不能搜索网页内容,你真的了解它的局限性吗?,ai修复情侣
ChatGPT服务部分恢复:人工智能助力全新体验,ai对象菜单
目前最火的AI软件有哪些?深度解析必备工具
360排名优化价格:打造高效网络营销的制胜法宝,ai换脸刘浩存自wei
SEO是什么意思?揭秘SEO的真正含义与重要性,公司推广网站询问d火18星来
ChatGPT4账号共享-让AI助力你的学习与工作,轻松提升效率,ai巨无霸
AI免费生成文字,打造创作新时代
SEO本站:提升网站流量与排名的秘密武器,荆门专业的抖音seo
二SEO是什么,h二seo三是什么 ,ai手术机
SEO知道:让你的网站在搜索引擎中脱颖而出,水安建设集团网站
软件AI:颠覆未来的智能革命
SEO妍:搜索引擎优化的艺术,轻松打造网络营销新未来,辽宁网站建设贵不贵
SEO优化的利器:提升网站排名的秘密武器,联想ai7g-3笔记本
AI文章精简-高效提炼与优化你的内容创作,ai quid
SEO快速提升:让你的网站排名瞬间飙升的秘诀,网站建设的发展目标
ChatGPT坏了用什么?替代方案,满足你的智能对话需求,星际一的ai
ChatGPT:如果您正在使用VPN,这些技巧您一定要知道!,AI换脸*H
seo资源指的是什么,seo资料 ,绿眼AI
AI搜索相似文章怎么做?揭秘高效文章检索的核心技术!,程式ai软件
SEO走动:提升网站流量的关键一步,SEO数据监控宝宝推荐
怎么降低文章的AI生成率:打造更真实、更有价值的内容
OpenAI您的信用卡被拒绝了?请尝试用借记卡支付,轻松解决支付问题!,ai cdr缩略图补丁
seo跟sem是什么,seo和sem的概念 ,惠威的ai功能