博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
值类型和引用类型
阅读量:6409 次
发布时间:2019-06-23

本文共 801 字,大约阅读时间需要 2 分钟。

黑马程序员--鄢振东

----------------------  、 、期待与您交流! ----------------------
 
在C#中,值类型有:int double decimal bool enum struct .
    应用类型有:string  数组  用户自定义类,等其他的都是引用类型
 
两者的区别:
1:在存储区上的区别: 值类型是存储在栈上面的,引用类型是存储在堆上面的。
 
2:在赋值上,值类型是直接赋新值给变量,但是引用类型是开辟一块新的空间来存放新值,
并将之前指向旧的值的那个地址改成指向新的值的地址。这就完成了一次赋值的操作。
 
在对应用类型进行赋值的时候:  首先,我们先从定义和赋初始值开始说起, 引用类型在被申明的时候,首先在堆中开辟一块内存空间,然后
将其在堆中的地址赋值给 栈 中的一快空间,这块空间就是来放一个引用类型在堆中的地址的。然后我 对其进行重新赋值的时候,并不是将堆
中的值给改变了,而是在堆中重新开辟了一块新的空间,然后将堆中的这个地址赋值给  之前这个变量在栈中开辟的那块存堆中的地址的那个地址,
所以之前的那个最先开辟在堆中的空间是不会被消除的,除非.Net FrameWork这个框架中的垃圾回收站自动帮我们完成释放内存的功能,但这是
在程序运行结束后才会做,所以我们如果对引用类型的变量  的话,我们应该尽量减少对其的重新赋值,就想string这个引用类型一样,我们如果
需要对字符串进行重复的赋值和处理,我们一般不会用string这个字符串来处理,   我们一般使用stringBuild 来处理字符串重新赋值的问题。
 
 
这篇文章的字数可能很少,但是全部写的是我自己对  值类型和引用类型的理解。当然,这些也是传智的老师教的,但是是我用自己的语言写出来的。

转载于:https://www.cnblogs.com/YZDK/p/3836856.html

你可能感兴趣的文章
java随机范围内的日期
查看>>
linux包之diff
查看>>
***PHP中判断变量为空的几种方法
查看>>
ABAP开发顾问必备:SAP ABAP开发技术总结
查看>>
MVC 接受Flash上传图片
查看>>
spring事务学习(转账案例)(二)
查看>>
[官方教程] [ES4封装教程]1.使用 VMware Player 创建适合封装的虚拟机
查看>>
http协议与http代理
查看>>
【iOS开发-91】GCD的同步异步串行并行、NSOperation和NSOperationQueue一级用dispatch_once实现单例...
查看>>
Redis+Spring缓存实例
查看>>
Storm集群安装详解
查看>>
Maven搭建Spring+Struts2+Hibernate项目详解
查看>>
centos7.x搭建svn server
查看>>
原码编译安装openssh6.7p1
查看>>
项目实战:自定义监控项--监控CPU信息
查看>>
easyui-datetimebox设置默认时分秒00:00:00
查看>>
蚂蚁分类信息系统5.8多城市UTF8开源优化版
查看>>
在django1.2+python2.7环境中使用send_mail发送邮件
查看>>
“Metro”,移动设备视觉语言的新新人类
查看>>
PHP源代码下载(本代码供初学者使用)
查看>>