排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术
分类:
Csharp
前言
线程堆栈:简称栈 Stack
托管堆: 简称堆 Heap
C#的引用类型包括:数组、委托、接口、object、字符串、用户定义的类。(string) 为什么string是引用类型 从string类型的值来分析 1)string str = null; 这个就可以成功 2)int a = null; 这样就会报错:“无法将null转换为int” 字符串也是object C#的值类型包括:数值类型、结构体、bool型、枚举、可空类型、用户定义的结构体。
堆
什么是堆?
堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小
堆是无序的,他是一片不连续的内存域,有用户自己来控制和释放,如果用户自己不释放的话,
当内存达到一定的特定值时,通过垃圾回收器(GC)来回收
堆上存放的则多是对象,数据等。
堆像是一个仓库,储存着我们使用的各种对象等信息,跟栈不同的是他们被调用完毕不会立即被清理掉
栈
什么是栈?
栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义
存放在栈中时要管存储顺序,保持着先进后出的原则,他是一片连续的内存域,有系统自动分配和维护
栈通常保存着我们代码执行的步骤
栈内存无需我们管理,也不受GC管理。当栈顶元素使用完毕,立马释放
值类型
什么是值类型
值类型存储在声明的地方。 值类型如果定义在方法中就存储在栈上面,如果是定义在类当中就是存储在堆上面
直接将内存储存在栈内,由系统自动释放资源的数据类型
引用类型和值类型都继承System.Object类。
几乎所有的引用类型都是从System.Object继承,而值类型则是继承System.Object的子类System。ValueType类
值类型分为4类8种
1、整形
int,long,byte,short
2、浮点型
float ,double
3、字符型
char
4、逻辑型
boolean
值类型数据赋值属于值传递,值传递是传递原参数是拷贝,实参传递给形参,形参发生改变而实参不变
所有的值类型从Object中继承来的。任何类型都不能由值类型派生而来,因此,值类型是封闭式的。
引用类型
引用类型永远都是存储在堆上面的。
存储指针,具体的内容在堆上面
引用类型: 类类型、接口类型、数组类型和委托类型
值类型赋值是重新创建一个副本 而引用类型的赋值是共享同一块内存(副本),是指向同一块内存
评价