菜的像徐坤
排名
7
文章
192
粉丝
15
评论
16
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

堆和栈,值类型和引用类型

4802人阅读 2021/5/23 13:33 总访问:959909 评论:0 收藏:3 手机
分类: 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中继承来的。任何类型都不能由值类型派生而来,因此,值类型是封闭式的。

引用类型

引用类型永远都是存储在堆上面的。

存储指针,具体的内容在堆上面

引用类型: 类类型、接口类型、数组类型和委托类型

 值类型赋值是重新创建一个副本
 而引用类型的赋值是共享同一块内存(副本),是指向同一块内存


评价

Java中的堆和栈以及堆栈的区别

在正式内容开始之前要说明一点,我们经常所说的堆栈堆栈是堆和栈统称,堆是堆,栈是栈,合在一起统称堆栈;  1.栈(stack)...

堆和栈的理解

解释1、栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义;堆是程序运行期间动态分配的内存空间...

堆和栈的解释和区别

前言:hello 各位老铁们 咋们又见面了 我是你们熟悉的小付,别人今天都去旅游了 要么就是耍去了 只有我一个苦逼的小白还在...

css弹性盒子flex布局

css弹性盒子由于版本不同浏览器问题造成了一些不同的写法display:flexbox;在google浏览器中如果使用下面的写法就不行displa...

可输入下拉文本框据输入动态加载数据 jquery-editable-select

用到一个jquery-editable-select的控件github地址:https://github.com/indrimuska/jquery-editable-select这个插件的原理是...

.net mvc分部页.net core分部页

.net分部页的三种方式第一种:@Html.Partial("_分部页")第二种:@{ Html.RenderPartial("分部页");}...

css中单位pxemrem和vh/vw的理解

>px像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。em是相对长度单位。相对于当前对象内文本的字...

让IIS支持webp格式图片让IIS支持vtt格式iis设置mime类型iis配置支持的类型

webp格式图片可以让图片体积变小。也让下载图片变得更加困难一点 在线制作webp工具 https://www.upyun.com/webp?utm_mediu...

网页上传文件断点续传的实现无视文件大小上传以及datatables基本用法

首先明白js是客户带执行代码,c#是服务器上执行代码。本地文件需要用到js处理,服务器端接受c#代码处理1.HTML页面,文件信...

如何使用图标像使用文字一样使用文本图标的方法

1.首先在Iconfont-阿里巴巴矢量图标库上面找到你需要的图标然后加入你的购物车然后选择图标;注意:每个类型的图标会大小不...

使用七牛云的cdn服务提高图片的加载速度

CDN介绍CDN的全称是Content Delivery Network,即内容分发网络。CDN加速主要是加速静态资源,如网站上面上传的图片、媒体,...

通俗易懂什么是.NET?什么是.NET Framework?什么是.NET Core?

朋友圈@蓝羽 看到一篇文章写的太详细太通俗了,搬过来细细看完,保证你对.NET有个新的认识理解原文地址:https://www.cnblo...

JS监听input、keydown有输入法时打字完成后触发事件

在给输入框绑定input或keydown事件时预期效果是有输入法时,输入中文后触发事件,不希望输一个字母就触发一次事件可以用到c...

修改了css后让浏览器从缓存中更新

当我们修改了css后,如果不做一些操作,浏览器是不会自动更新我们的样式文件的。除非是过期或者用户手动刷新清理缓存等。所...