1.    值类型的数据存储在内存的栈中;引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的

地址。

2.     值类型存取速度快,引用类型存取速度慢。

3.     值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针或引用

4.     值类型继承自System.ValueType,引用类型继承自System.Object

5.     栈的内存分配是自动释放;而堆在.NET中会有GC来释放

6.      值类型的变量直接存放实际的数据,而引用类型的变量存放的则是数据的地址,即对象的引用。

7. 值类型变量直接把变量的值保存在堆栈中,引用类型的变量把实际数据的地址保存在堆栈中,而实际

数据则保存在堆中。注意,堆和堆栈是两个不同的概念,在内存中的存储位置也不相同,堆一般用于存储

可变长度的数据,如字符串类型;而堆栈则用于存储固定长度的数据,如整型类型的数据int(每个int变量

占用四个字节)。由数据存储的位置可以得知,当把一个值变量赋给另一个值变量时,会在堆栈中保存两

个完全相同的值;而把一个引用变量赋给另一个引用变量,则会在堆栈中保存对同一个堆位置的两个引用

,即在堆栈中保存的是同一个堆的地址。在进行数据操作时,对于值类型,由于每个变量都有自己的值,

因此对一个变量的操作不会影响到其它变量;对于引用类型的变量,对一个变量的数据进行操作就是对这

个变量在堆中的数据进行操作,如果两个引用类型的变量引用同一个对象,实际含义就是它们在堆栈中保

存的堆的地址相同,因此对一个变量的操作就会影响到引用同一个对象的另一个变量。

转载于:https://www.cnblogs.com/Lucifer7/p/4087919.html

C#中值类型和引用类型的区别相关推荐

  1. java引用类型和值类型_[Java教程]JavaScript中值类型和引用类型的区别

    [Java教程]JavaScript中值类型和引用类型的区别 0 2017-02-24 00:00:35 JavaScript的数据类型分为两类:原始类型和对象类型.其中,原始类型包括:数字.字符串和 ...

  2. 彻底理解C#中值类型和引用类型的区别

    ref:http://space.itpub.net/12639172/viewspace-501584 特点 值类型 引用类型 变量存放的内容 实际值 引用 内存单元 内联(堆栈) 堆 默认值 0 ...

  3. 值类型与引用类型的区别

    可以这样理解: 值类型保存的是具体的值 引用类型保存的是值的地址 例如 int a = 1; int b = a; b++; 这时b为2,a仍然是1 再看引用类型,例如有个类型是 User User ...

  4. C#中值类型和引用类型

    C#中值类型和引用类型 http://www.cnblogs.com/123clb/archive/2011/03/03/1969712.html 概念: 1.值类型:数据存储在内存的堆栈中,从堆栈中 ...

  5. C#类和接口、虚方法和抽象方法及值类型和引用类型的区别

    1.C#类和接口的区别 接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念! 而类是负责功能的具体实现! 在类中也有抽象类的定义,抽象类与接口的区别在于: 抽象类是一个不完全的类,类 ...

  6. 值类型和引用类型及其区别!

    值类型和引用类型的基类 引用类型和值类型都继承自System.Object类.不同的是,几乎所有的引用类型都直接从System.Object继承,而值类型则继承其子类,即直接继承System.Valu ...

  7. 值类型和引用类型的区别[转]

    似乎"值类型和引用类型的区别"是今年面试的流行趋势,我已然是连续三次(目前总共也就三次)面试第一个问题就遇到这个了,这是多大的概率啊,100%,哈哈,我该买彩票去! 言归正传,咱还 ...

  8. java 值类型与引用类型_Java值类型和引用类型的区别

    似乎"值类型和引用类型的区别"是今年面试的流行趋势,我已然是连续三次(目前总共也就三次)面试第一个问题就遇到这个了,这是多大的概率啊,100%,哈哈,我该买彩票去! 言归正传,咱还 ...

  9. golang值类型与引用类型的区别

    1.golang值类型与引用类型的区别 1.1 本质存储区别 值类型与引用类型的区别主要在于: 值类型的变量: 存储当前类型的存储的数据.值类型包括数值类型.bool.string.数组.struct ...

最新文章

  1. 数据库对象 同义词 索引 序列 视图
  2. 40 自动化运维工具Ansible
  3. bootstrap 辅助类
  4. Oracle(二)单行函数
  5. SAP License:谈对财务人的解惑
  6. 使用HTML5和CSS3碎语
  7. Semaphore源码解读
  8. ArcGIS安装1606错误解决办法-清理注册表
  9. 一个INT 10H中断的小例子
  10. 自动化鼠标和键盘操作pyautogui
  11. Qlikview常用VB脚本
  12. What does assigning ‘shift‘ to a variable mean?
  13. 二维码是如何设计出来的?
  14. java HotSpot 内存管理白皮书
  15. 厉害了,可以不重启JVM就替换掉已经加载的类?
  16. R语言 第三方软件包的下载及安装
  17. 联想收购诺基亚?玩笑而已别太当真
  18. 串口通信--CSerialport类
  19. Windows运行.sh文件方法
  20. 【稳定性day0】稳定性治理的三种思想—亚马逊、Netflix与蚂蚁金服

热门文章

  1. Java不满足的依赖异常_java – 新的缺失/不满足的依赖项WildFly 9中的错误
  2. Python反向列表
  3. Sobel边缘检测算法及OpenCV函数实现
  4. [msi]安装包无法安装,提示没有找到源文件xxx.cab
  5. Flutter安装、配置、初体验 windows 版
  6. Qt之利用事件过滤器在QLabel上画框
  7. 10人勾结苹果外包公司员工窃个人信息 涉案900万
  8. 《CUDA C编程权威指南》——2.2 给核函数计时
  9. mysql 61错误解决方法
  10. Tsung压力测试工具的搭建和使用,配置。