2022年个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱[整 .pdf
《2022年个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱[整 .pdf》由会员分享,可在线阅读,更多相关《2022年个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱[整 .pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、6 个重要的.NET 概念:栈,堆,值类型,引用类型,装箱,拆箱引言本篇文章主要介绍.NET 中 6 个重要的概念:栈,堆,值类型,引用类型,装箱,拆箱。文章开始介绍当你声明一个变量时,编译器内部发生了什么,然后介绍两个重要的概念:栈和堆;最后介绍值类型和引用类型,并说明一些有关它们的重要原理。最后通过一个简单的示例代码说明装箱拆箱带来的性能损耗。声明变量的内部机制在.NET 程序中,当你声明一个变量,将在内存中分配一块内存。这块内存分为三部分:1,变量名;2,变量类型;3,变量值。下图揭示了声明一个变量时的内部机制,其中分配的内存类型依据你的变量类型。.NET中有两种类型的内存:栈内存和堆内
2、存。在接下来的内容中,我们会了解到这两种类型的详细内容。栈和堆为了明白什么是栈和堆,先让我们看下下面示例代码的内部机制:1publicvoid Method1()2/Line 1 名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 7 页 -3 inti=4;4/Line 2 5inty=2;6/Line 3 7class1 cls1=newclass1();8这里一共有3 行代码。让我们一下逐行看一下它们是如何执行的:第 1 行:当这行代码执行时,编译器为它分配一小块栈内存。运行时栈负责提供程序所需的内存;第 2 行:程序继续执行。如同名字一样,栈在第一块内存的顶部分配了一块内存。
3、你也可以认为是模块或零件一块一块叠起来;内存的分配与释放遵循后进先出(后进先出)逻辑,换句话说,内存只能在示例中i内存块的顶部分配或释放。第 3 行:在第3 行,我们创建了一个对象。当该行执行时,编译器在站上创建了一个指针,真实的对象存储在另一种叫“堆”的内存中。堆并不跟踪运行内存,它更像一堆随时可以访问的对象。堆用于动态分配内存。这里需要着重说明的是引用指针是分配在栈上。声明 Class1 cls1 时并不会给Class1 的实例分配内存,而是分配一个栈变量cls1(并设置为null),然后把它指向“堆”。退出方法:当方法退出时,它释放了栈上所有内存变量。换句话说,栈上所有的Int 变量都依
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年个重要的.NET概念:栈 堆 值类型 引用类型 装箱 拆箱整 2022 重要 NET 概念 类型 引用 装箱 拆箱
限制150内