博客
关于我
Effective C# 学习笔记(四十五)减少装箱拆箱行为
阅读量:790 次
发布时间:2023-01-24

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

在.NET环境中,装箱和拆箱是管理不同类型之间转换的重要机制。值类型用于存储基本数据,如整数、浮点数等,而引用类型用于表示对象,支持多态。所有.NET类型都从System.Object继承,这看似存在冲突。但是,Net通过装箱和拆箱机制实现了类型间转换。

标题一:装箱与拆箱的基本概念在进行参数格式化时,Net会自动装箱将值类型如整数,转换为引用类型的对象。例如,调用Console.WriteLineFORMAT_METHOD时,整数参数会被装箱成对象集合。这种机制内部处理包括将值类型firstParm赋值5时,隐式执行装箱操作,生成object类型对象。

标题二:避免装箱拆箱的方法为了避免回调不支持范型方法时的自动装箱,可以通过ToString()方法显式地将值类型转换为字符串。例如,改写Console.WriteLine调用方法,使其采用单个string参数,并用ToString()方法对每个值类型参数进行显式转换。

标题三:集合类型的弊端当集合类型如List

存储值类型对象时,每次取出对象都只能得到拷贝而非原对象。使用值类型对象时,不能直接修改其属性,因为每次操作会复制一份拷贝数据。因此,应使用不可变值类型对象,确保属性更改影响原数据。

参考:通过选择不可变值类型,如字符串、避免数据破坏,确保对象一致性。如遇到不可变对象需求,应审慎选择相应的数据类型。

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

你可能感兴趣的文章
ecmall开发记录(一)
查看>>
ecplise中创建jsp页面时默认的编码格式为ISO-8859-1,这里我们将其编码格式设置为utf-8...
查看>>
ECSHOP实现收货国家省市由选择下拉菜单改为手动
查看>>
ECShop模板原理
查看>>
edgeboxes proposal 和dpm 连接
查看>>
EdgeX Foundry:开启边缘计算新时代
查看>>
EdgeX Foundry:边缘计算的创新平台
查看>>
EdgeX Foundry:边缘计算的未来趋势与应用
查看>>
Edge浏览器打开控制台后程序总是停止进入debug模式关闭教程【八仙过海之又一过海方案】
查看>>
Educational Codeforces Round 28
查看>>
Educational Codeforces Round 47 (Rated for Div. 2)F. Dominant Indices 线段树合并
查看>>
ed编辑器--适用于shell脚本内编辑文件的最最简单编辑器
查看>>
"SQLServer复制需要有实际的服务器名称才能连接到服务器,请指定实际的服务器名"转...
查看>>
EF 资料
查看>>
EF6.0中出现未找到具有固定名称“System.Data.SqlClient”的 ADO.NET提供程序的实体框架提供程序解决办法...
查看>>
EF6与MVC5系列(4):在MVC应用程序中使用弹性连接和命令拦截
查看>>
Effective C# 学习笔记(四十五)减少装箱拆箱行为
查看>>
Effective Modern C++:02auto
查看>>
efficientnet最合适的尺寸和最后一层的层数
查看>>
EF三种编程方式详细图文教程(C#+EF)之Database First
查看>>