“关于Csharp装箱的疑问”帖子的个人看法
本文最后更新于 2025-11-16 22:09:11
前言
昨天晚上闲着无事,就上csdn逛了一下,突然发现一个帖子很有意思,就点进去看了一下。
问题很精辟
1 | |
本文测试代码:
1 | |
使用ildasm.exe查看结果:
增加注释:
我对于IL代码的自己理解思路:
1 | |
①对于2、4 可参考装箱和取消装箱(C# 编程指南)装箱部分内容
②对于3处,我理解是:b、c指向堆栈上同一个对象,帖子中12楼impasse这位仁兄回答也证实了这一点。
③测试过程中我发现当我改变b中对象值时,c不改变。我认为此时,当改变b对象后,已经在堆栈上新建对象,b指向此对象,而此时b,c不同。此处与class类型不同。
本文参考:IL指令详细 、 大內高手專欄:.NET中間語言(IL)
“关于Csharp装箱的疑问”帖子的个人看法
https://njit-77.github.io/2017/10/07/“关于Csharp装箱的疑问”帖子的个人看法/
