当前位置: 首页 > news >正文

株洲专业网站建设中国站长网入口

株洲专业网站建设,中国站长网入口,网站开发属于什么专业,做logo用什么网站上一篇文章讲了C#的值类型和引用类型,这里再来看看值类型和引用类型最直接的使用场景:装箱和拆箱。 一、基本概念 装箱:值类型转化为引用类型的过程。从托管堆中为新生成的引用类型对象分配内存,再把值类型的实例字段拷贝到托管堆上新对象的…

上一篇文章讲了C#的值类型和引用类型,这里再来看看值类型和引用类型最直接的使用场景:装箱和拆箱。

一、基本概念

装箱:值类型转化为引用类型的过程。从托管堆中为新生成的引用类型对象分配内存,再把值类型的实例字段拷贝到托管堆上新对象的内存中,然后返回对象的引用。

拆箱:引用类型转化为值类型的过程。获取指向对象中包含的值类型部分[数据字段]的指针,不会涉及字段拷贝。

利用装箱和拆箱功能,可通过允许值类型的任何值与Object 类型的值相互转换,将值类型与引用类型链接起来。

二、装箱/拆箱的内部操作

1、装箱

对值类型在堆中分配一个对象实例,并将该值复制到新的对象中。按三步进行。

1)新分配托管堆内存(大小为值类型实例大小加上一个方法表指针和一个SyncBlockIndex

2)将值类型的实例字段拷贝到新分配的内存中

3)返回托管堆中新分配对象的地址。这个地址就是一个指向对象的引用

 

2、拆箱

拆箱过程分两步进行:

1)检查对象实例,确保它是给定值类型的一个装箱值

2)将该值从实例复制到值类型变量中

通过上述的原理可以看出,装拆箱分配内存和拷贝数据会影响性能的操作,尽量避免装拆箱。 

三、装箱拆箱实例分析

using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Security;
using System.Text;namespace ConsoleApplication1
{class Program{static void Main(string[] args){Dowork();}static void Dowork(){int i = 10;//将值类型的i装箱//需要注意的是:这里的装箱采用的是值的拷贝object obj = i;//检验是否装箱成功了if (obj is int){Console.WriteLine("数据已经装箱!");}//我们在这里更改i的值i = 33;Console.WriteLine("int i现在的值是:{0}", i);Console.WriteLine("int i装箱的值是:{0}", obj);//拆箱操作int j = (int)obj;Console.WriteLine("j的值为{0}", j.ToString());}}
}

小结:

从程序员的角度来看,装箱和拆箱是很方便的,我们不需要手动去复制和转移内存中的值类型和引用类型的数据。

但装箱和拆箱背后的栈/堆内存转移也带来了性能问题。所以,我们平时在编程时应当尽量避免发生装箱和拆箱操作。

http://www.ritt.cn/news/14014.html

相关文章:

  • 网站轮播动态图如何做公司网站建设哪家公司好
  • 做网站留后门是怎么回事百度浏览器官网入口
  • 做的图怎么上传到网站全球外贸采购网
  • 网站制作企业有哪些公司关键词优化排名软件哪家好
  • php做网站商城系统怎么样智能优化网站
  • 建设网站的网站今日疫情最新数据
  • 做电商要关注哪些网站百度推广seo
  • 民宿设计网站大全网络营销的策略包括
  • 做网站为什么不要源代码品牌策划包括哪几个方面
  • 网站建设项目国内外分析报告口碑seo推广公司
  • 寺庙网站建设外包公司被辞退有补偿吗
  • 网站是怎么优化的合肥seo推广外包
  • 网站建设时时彩今日头条网站推广
  • 建设工程合同范本 政府网站龙岗网站制作
  • 汽车精品网站建设ciliba磁力猫
  • 拖拽做网站石家庄seo排名公司
  • 南通 网站建设北京seo公司
  • 瓜果蔬菜做的好的电商网站网销怎么做
  • 网页制作与网站建设江西宁波seo外包推广
  • 简历制作免费模板网站成都网络推广哪家好
  • 道滘东莞微信网站建设代写文章多少钱
  • ui设计师岗位介绍东莞网站推广优化公司
  • 做网站要什么资质津seo快速排名
  • 中英双语网站模板网络营销的概念及特点
  • 互动性的网站seo岗位职责
  • 南开网站建设公司nba最新排行榜
  • 城乡建设部统计信息网站百度关键词竞价排名
  • 贵阳建站公司怎么免费创建网站
  • 做360手机网站优化排整合营销方案案例
  • 企业网站开发费用包括哪些合肥seo网站建设