反编译dll文件,C#的装箱与拆箱,

本文通过反编译C#代码成.NET的IL文件,详细解析了值类型赋值给引用类型时的装箱操作,以及反之的拆箱过程。作者通过实例展示了IL指令如何体现这些概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 编写cs文件​编辑

反编译成IL文件 

分析IL文件

 第一行: IL_0000:  /* 19   |                  */ ldc.i4.3

第二行: IL_0001:  /* 0A   |                  */ stloc.0

第三行:_0002:  /* 06   |                  */ ldloc.0

第四行:_0003:  /* 8C   | (01)00000F       */ box        [System.Runtime]System.Int32

第七行 IL_000a:  /* A5   | (01)00000F       */ unbox.any  [System.Runtime]System.Int32

第八行: IL_000f:  /* 0C   |                  */ stloc.2

第九行 : IL_0010:  /* 2A   |                  */ ret

总结


       该文章尝试把cs(C#语言)文件反编译成.Net的IL(通用中间语言)文件以观察拆箱和装箱的过程在IL文件中是怎么发生的。

灵感来源于观看了大佬的博客,于是模仿大佬的操作自己尝试下。下面是CREDIT。
原文连接:Six Important .NET Concepts: Stack, Heap, Value Types, Reference Types, Boxing, and Unboxing - CodeProject(大佬的图片和文章都比这篇博文精彩,推荐去看下。)

关于CIL部分参考的博客:

Understanding Common Intermediate Language (CIL) - CodeProject

然后关于后续用到的把dll文件反编译成IL文件是参考下面这篇博客。
如何使用ILAsm與ILDasm修改.Net exe(dll)文件_ZenDei技術網路在線

 编写cs文件

该程序做了三步操作,
1.把整数3赋值给变量X。
2.把变量X传递给一个Object类“O”。
3.再把O传递给变量Y。

在命令行输入dotnet build,或者直接代码,即可得到dll文件与exe文件。

反编译成IL文件 
  1. 打开Visual Studio 2022 Developer Command Prompt(这个下载了VS就会自动装上)。
  2. 输入“ILDSM”打开反编译的软件。
  3. 文件--打开--选择dll/exe文件--转储--默认选项下点确定

  4. 得到IL文件

分析IL文件

终于找到了CIL(Common Intermediate Language

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值