【C#基础】从堆栈看类型
来源:互联网 发布:intel edison linux 编辑:程序博客网 时间:2024/06/08 06:02
1.什么是堆和栈?
栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义,栈负责保存代码的执行和调用过程;堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小,负责保存对象和数据。
举例说明:将栈想象成一个自顶向下堆叠而成的盒子,每调用一次方法,应用程序所发生的事情记录在栈顶的一个盒子中,而我们每次只能使用栈顶的盒子来记录执行过程。堆大多用来保存信息,因此可在任意时间访问,可以比喻成一个仓库存储着所有的东西,里面是无章可循的没有排列的先后,但是需要的信息都可以在堆里面找到。
2.什么是值类型和引用类型
值类型和引用类型包含如下:
3.值类型和引用类型的区别:
1一般而言,值类型的数据存储在内存的栈中,引用类型存储在内存的堆中(这种说法不够严谨,为记忆便利)。
2从上面的举例当中也能够看出值类型(栈)的存取速度快,引用类型(堆)存取速度慢。
3值类型表示实际数据,引用类型表示指向存储在内存中的数据的指针或引用。
4值类型继承自System.Valuetype,引用类型继承自System.Object
5栈的内存自动释放,堆有GC(垃圾回收机制)
4.装箱和拆箱
装箱和拆箱是值类型和引用类型之间相互转换是要执行的操作,作为一个桥梁的作用。装箱和拆箱是值类型和引用类型之间相互转换是要执行的操作。简单的来说:装箱就是值类型转换为引用类型;拆箱就是引用类型转换为值类型。
举例:
装箱是值类型到object 类型或到此值类型所实现的任何接口类型的隐式转换 int i = 10 ;object obj = i;
拆箱将引用类型转换为值类型,从object 类型到值类型或从接口类型到实现该接口的值类型的显式转换;:int i=0;Object obj=i;int j=(int)obj;
- 【C#基础】从堆栈看类型
- 从String对象的创建看ava堆栈
- 从堆栈布局看gcc不同版本的优化
- C#类型基础----引用类型
- C# 中堆栈,堆,值类型,引用类型的理解
- C# 类型基础
- C# 类型基础
- C# 类型基础
- C# 类型基础
- C# 类型基础
- C# 类型基础
- C# 类型基础
- C# 类型基础
- C# 类型基础
- C#类型基础
- C# 类型基础
- C# 类型基础
- C# 类型基础
- 值得推荐的C/C++框架和库(深度好文)
- 2017.1.21【初中部 GDKOI】模拟赛B组 逻辑的连通性 题解
- JavaScript——DOM基础
- 【python爬虫】scrapy框架笔记(一):创建工程,使用scrapy shell,xpath
- TDD好处在哪?是否与自动测试好处混淆
- 【C#基础】从堆栈看类型
- 2016年Java面试复习点
- 利用阿里巴巴的矢量图片库工具网站制作自己的图标字体
- Nginx源码阅读(ngx_list_t)
- CoordinatorLayout 协调者布局的简单使用1
- Git仓库应用
- 数据挖掘整理(一)
- 分块查找算法 (php)
- RxJava学习经验谈——map与flatmap