C#装箱和拆箱

一,装箱

装箱是指将值类型转化为引用类型。

代码如下:

装箱的内部过程

  • 当值类型需要被装箱为引用类型时,CLR(Common Language Runtime)会为值类型分配内存,在堆上创建一个新的对象。
  • 值类型的数据会被复制到这个新创建的对象中。
  • 最终,装箱操作会返回一个指向堆上新对象的引用。

二,拆箱

装箱是指将引用类型转化为值类型。

代码如下:

拆箱的内部过程

  • 当需要从引用类型中提取值类型数据时进行拆箱操作。
  • CLR会检查引用类型的实际数据类型是否与拆箱的目标值类型相匹配,如果不匹配会引发无效的类型转换异常。
  • 拆箱操作会从堆上的对象中提取值类型的数据,并将其转换为目标值类型。
相关推荐
bugcome_com15 分钟前
C# 可空类型(Nullable)详解
c#
大Mod_abfun2 小时前
Socket网络通信教程1(文件传输,IPv4+v6,多客户端管理,重构?)
服务器·网络·c#·socket·vb.net·文件传输
czhc11400756633 小时前
ModBus 218
c#
Never_Satisfied15 小时前
在c#中,使用windows自带功能将文件夹打包为ZIP
开发语言·windows·c#
Never_Satisfied17 小时前
在c#中,string.replace会替换所有满足条件的子字符串,如何只替换一次
开发语言·c#
观无20 小时前
visionpro的dll导入
c#
Desirediscipline21 小时前
#define _CRT_SECURE_NO_WARNINGS 1
开发语言·数据结构·c++·算法·c#·github·visual studio
蚊子码农1 天前
算法题解记录-2452距离字典两次编辑以内的单词
开发语言·算法·c#
专注VB编程开发20年1 天前
c# vb.net Redis 左侧添加,右侧添加(添加到头部,添加到尾部)
redis·c#·.net
kylezhao20191 天前
C#异步和并发在IO密集场景的典型应用 async/await
开发语言·数据库·c#