C#中值类型和引用类型的区别
1. 值类型的数据存储在内存的栈中;引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的
地址。
2. 值类型存取速度快,引用类型存取速度慢。
3. 值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针或引用
4. 值类型继承自System.ValueType,引用类型继承自System.Object
5. 栈的内存分配是自动释放;而堆在.NET中会有GC来释放
6. 值类型的变量直接存放实际的数据,而引用类型的变量存放的则是数据的地址,即对象的引用。
7. 值类型变量直接把变量的值保存在堆栈中,引用类型的变量把实际数据的地址保存在堆栈中,而实际
数据则保存在堆中。注意,堆和堆栈是两个不同的概念,在内存中的存储位置也不相同,堆一般用于存储
可变长度的数据,如字符串类型;而堆栈则用于存储固定长度的数据,如整型类型的数据int(每个int变量
占用四个字节)。由数据存储的位置可以得知,当把一个值变量赋给另一个值变量时,会在堆栈中保存两
个完全相同的值;而把一个引用变量赋给另一个引用变量,则会在堆栈中保存对同一个堆位置的两个引用
,即在堆栈中保存的是同一个堆的地址。在进行数据操作时,对于值类型,由于每个变量都有自己的值,
因此对一个变量的操作不会影响到其它变量;对于引用类型的变量,对一个变量的数据进行操作就是对这
个变量在堆中的数据进行操作,如果两个引用类型的变量引用同一个对象,实际含义就是它们在堆栈中保
存的堆的地址相同,因此对一个变量的操作就会影响到引用同一个对象的另一个变量。
转载于:https://www.cnblogs.com/Lucifer7/p/4087919.html
C#中值类型和引用类型的区别相关推荐
- java引用类型和值类型_[Java教程]JavaScript中值类型和引用类型的区别
[Java教程]JavaScript中值类型和引用类型的区别 0 2017-02-24 00:00:35 JavaScript的数据类型分为两类:原始类型和对象类型.其中,原始类型包括:数字.字符串和 ...
- 彻底理解C#中值类型和引用类型的区别
ref:http://space.itpub.net/12639172/viewspace-501584 特点 值类型 引用类型 变量存放的内容 实际值 引用 内存单元 内联(堆栈) 堆 默认值 0 ...
- 值类型与引用类型的区别
可以这样理解: 值类型保存的是具体的值 引用类型保存的是值的地址 例如 int a = 1; int b = a; b++; 这时b为2,a仍然是1 再看引用类型,例如有个类型是 User User ...
- C#中值类型和引用类型
C#中值类型和引用类型 http://www.cnblogs.com/123clb/archive/2011/03/03/1969712.html 概念: 1.值类型:数据存储在内存的堆栈中,从堆栈中 ...
- C#类和接口、虚方法和抽象方法及值类型和引用类型的区别
1.C#类和接口的区别 接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念! 而类是负责功能的具体实现! 在类中也有抽象类的定义,抽象类与接口的区别在于: 抽象类是一个不完全的类,类 ...
- 值类型和引用类型及其区别!
值类型和引用类型的基类 引用类型和值类型都继承自System.Object类.不同的是,几乎所有的引用类型都直接从System.Object继承,而值类型则继承其子类,即直接继承System.Valu ...
- 值类型和引用类型的区别[转]
似乎"值类型和引用类型的区别"是今年面试的流行趋势,我已然是连续三次(目前总共也就三次)面试第一个问题就遇到这个了,这是多大的概率啊,100%,哈哈,我该买彩票去! 言归正传,咱还 ...
- java 值类型与引用类型_Java值类型和引用类型的区别
似乎"值类型和引用类型的区别"是今年面试的流行趋势,我已然是连续三次(目前总共也就三次)面试第一个问题就遇到这个了,这是多大的概率啊,100%,哈哈,我该买彩票去! 言归正传,咱还 ...
- golang值类型与引用类型的区别
1.golang值类型与引用类型的区别 1.1 本质存储区别 值类型与引用类型的区别主要在于: 值类型的变量: 存储当前类型的存储的数据.值类型包括数值类型.bool.string.数组.struct ...
最新文章
- 数据库对象 同义词 索引 序列 视图
- 40 自动化运维工具Ansible
- bootstrap 辅助类
- Oracle(二)单行函数
- SAP License:谈对财务人的解惑
- 使用HTML5和CSS3碎语
- Semaphore源码解读
- ArcGIS安装1606错误解决办法-清理注册表
- 一个INT 10H中断的小例子
- 自动化鼠标和键盘操作pyautogui
- Qlikview常用VB脚本
- What does assigning ‘shift‘ to a variable mean?
- 二维码是如何设计出来的?
- java HotSpot 内存管理白皮书
- 厉害了,可以不重启JVM就替换掉已经加载的类?
- R语言 第三方软件包的下载及安装
- 联想收购诺基亚?玩笑而已别太当真
- 串口通信--CSerialport类
- Windows运行.sh文件方法
- 【稳定性day0】稳定性治理的三种思想—亚马逊、Netflix与蚂蚁金服