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

佛山购物网站建设软文广告经典案例200字

佛山购物网站建设,软文广告经典案例200字,化妆品网站建设操作可行性分析,做的比较好的网页设计网站在C#中,装箱(Boxing)和拆箱(Unboxing) 是值类型与引用类型之间转换的核心机制。它们的实现直接影响程序的性能和类型安全。 一、装箱(Boxing) 定义: 将值类型转换为引用类型&#…

        在C#中,装箱(Boxing)拆箱(Unboxing) 是值类型与引用类型之间转换的核心机制。它们的实现直接影响程序的性能和类型安全。

一、装箱(Boxing)

定义:

值类型转换为引用类型(通常是object或接口类型)的过程

过程:

  1. 堆(Heap)中分配内存,用于存储值类型的副本
  2. 栈(Stack)上的值类型数据复制到堆中
  3. 返回堆中新对象的引用

示例

int value = 1;
object boxed = value; //装箱操作

常见场景

  • 将值类型添加到非泛型集合(如ArrayList)
  • 调用接受object参数的方法时传递值类型

特殊场景

1.Nullable类型(T?)的装箱

  • 如果Nullable<T>的值为null,装箱结果为null
  • 如果有值(如int?i = 1),则装箱其基础类型为(int

2.枚举类型(Enum)的装箱

枚举值会被装箱为底层类型(如int )的实例

性能影响:

  • 堆内存分配和复制操作会带来性能开销
  • 频繁装箱(如循环中)可能会导致内存压力,触发垃圾回收(GC)

二、拆箱

定义:

引用类型(已装箱的值)转换回原始值类型的过程,拆箱的本质是从堆中逐字节复制原始值类型数据到栈

过程:

  1. 检查引用类型是否与目标值类型兼容(否则抛出InvalidCastException)
  2. 将堆中存储的值复制到栈上的值类型变量中

示例

object boxed = 1;
int unboxed = (int)boxed; //拆箱操作

错误示例

object boxed = 1;
double d = (double)boxed; // 抛出 InvalidCastException

错误原因

类型兼容性:CLR(公共语言运行时)会验证引用类型是否与目标值类型完全匹配,装箱的是int,拆箱时目标类型必须也是int,否则抛出InvalidCastException

  • 拆箱的本质是从堆中 逐字节复制原始值类型数据 到栈
  • int 和 double 的内存布局不同:
  • int 是 4 字节整数(如 42 的二进制为 0x0000002A
  • double 是 8 字节浮点数(如 42.0 的二进制为 0x4045000000000000
  • CLR 无法直接将 int 的二进制数据当作 double 解析,必须显式转换

错误修正

  1. 拆箱到原始类型(int
  2. 显式类型转换(int → double

修正后代码:

object boxed = 1;
int unboxedInt = (int)boxed;    // 正确拆箱到 int
double d = (double)unboxedInt;  // 再转换为 double// 或者简写为:
double d = (int)boxed;          // 隐式转换为 double

内存结构

托管堆中的对象:  
[对象头] [同步块索引] [int 数据 = 1]  
↑  
boxed 引用指向此处栈上的 unboxed 变量:  
[int 数据 = 1]

关键点

  • 必须显式指定目标类型(强制类型转换)
  • 拆箱失败会抛出异常,需确保类型匹配
  • 拆箱后需要再次复制数据,仍有性能开销

三、性能优化

1.使用泛型集合

如使用(List<T>)替代非泛型集合(ArrayList)避免装箱

List<int> list = new List<int>(); // 无装箱
list.Add(1);

2.利用接口泛型方法避免装箱

例如,使用IEquatable<T>Equals(T other)方法,而不是object. Equals

3.注意ToString和格式化方法:

int i = 1;
Console.WriteLine(i.ToString()); // 避免装箱(直接调用值类型的ToString)
Console.WriteLine($"{i}"); // 隐式调用 i.ToString(),避免装箱

4.避免在循环或高频代码中装箱/拆箱

5.使用isas安全检查后再拆箱

http://www.dtcms.com/wzjs/400775.html

相关文章:

  • 什么是网络营销管理搜索引擎优化指的是什么
  • 可以接单做3d网站域名查询ip138
  • 门户网站时代品牌设计公司排名前十强
  • 宜春网站建设公司哪家好排名查询
  • 地图网站怎么做的贵阳seo网站管理
  • 网站建设及营销方案软文推广广告公司
  • 做网站哪个语言快十大小说网站排名
  • 微信网站小游戏灰色词快速上排名
  • 商务网站建设的基本流程sem 优化软件
  • 免费网站建设程序济南seo关键词优化方案
  • crm系统公司排名seo快速优化软件
  • 建设报名系统网站可靠吗搜索seo怎么优化
  • 企业网站域名注册八种营销模式
  • java和HTML做网站刚刚中国突然宣布
  • 营销型网站建设 上海郑州seo软件
  • 驻马店做网站推广baidu百度首页官网
  • 手机网站案列申请域名
  • 自己电脑做网站 外网无法访问推广方式都有哪些
  • asp做网站很少引流推广的句子
  • 网站建设的英语百度链接提交入口
  • 本地wordpress打开慢站长之家seo综合查询
  • 礼叮当 一家做创意礼品定制的网站网上推广怎么收费
  • 昆山张浦做网站济源网络推广
  • 做网站分几步国际重大新闻
  • 网站运营做的是什么工作合肥搜索引擎优化
  • 申请空间 建立网站吗成都seo达人
  • c 做商务网站方便吗网络媒体广告代理
  • wordpress添加验证码seo优化排名教程百度技术
  • 西安疫情最新消息今天封城了吉林网站seo
  • 旅行社服务网点能否做网站seo网站优化推广教程