.NET之栈、堆、值类型、引用类型、装箱、拆箱

引言

这篇文章是我很早之前看到的,当时解决了我很多疑惑的地方。现在拿出来与大家分享。本篇文章主要介绍.NET中6个重要的概念:栈,堆,值类型,引用类型,装箱,拆箱。文章开始介绍当你声明一个变量时,编译器内部发生了什么,然后介绍两个重要的概念:栈和堆;最后介绍值类型和引用类型,并说明一些有关它们的重要原理。

最后通过一个简单的示例代码说明装箱拆箱带来的性能损耗。

声明变量的内部机制

在.NET程序中,当你声明一个变量,将在内存中分配一块内存。这块内存分为三部分:1,变量名;2,变量类型;3,变量值。

下图揭示了声明一个变量时的内部机制,其中分配的内存类型依据你的变量类型。.NET中有两种类型的内存:栈内存和堆内存。在接下来的内容中,我们会了解到这两种类型的详细内容。
Continue reading “.NET之栈、堆、值类型、引用类型、装箱、拆箱”