区别:
1、值类型通常被分配在栈上,它的变量直接包含变量的实例,使用效率比较高。

2、引用类型分配在托管堆上,引用类型的变量通常包含一个指向实例的指针,变量通过该指针来引用实例。

3、值类型继承自ValueType(注意:而System.ValueType又继承自System.Object);而引用类型继承自System.Object。

4、值类型变量包含其实例数据,每个变量保存了其本身的数据拷贝(副本),因此在默认情况下,值类型的参数传递不会影响参数本身;而引用类型变量保存了其数据的引用地址,因此以引用方式进行参数传递时会影响到参数本身,因为两个变量会引用了内存中的同一块地址。

5、值类型有两种表示:装箱与拆箱;引用类型只有装箱一种形式。我会在下节以专门的篇幅来深入讨论这个话题。

6、典型的值类型为:struct,enum以及大量的内置值类型;而能称为类的都可以说是引用类型。

7、值类型的内存不由GC(垃圾回收,Gabage Collection)控制,作用域结束时,值类型会自行释放,减少了托管堆的压力,因此具有性能上的优势。例如,通常struct比class更高效;而引用类型的内存回收,由GC来完成,微软甚至建议用户最好不要自行释放内存。

8、值类型是密封的(sealed),因此值类型不能作为其他任何类型的基类,但是可以单继承或者多继承接口;而引用类型一般都有继承性。

9、值类型不具有多态性;而引用类型有多态性。

10、值类型变量不可为null值,值类型都会自行初始化为0值;而引用类型变量默认情况下,创建为null值,表示没有指向任何托管堆的引用地址。对值为null的引用类型的任何操作,都会抛出NullReferenceException异常。

11、值类型有两种状态:装箱和未装箱,运行库提供了所有值类型的已装箱形式;而引用类型通常只有一种形式:装箱。

值类型和引用类型的区别,应该很全的。相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. swift string转int_swift中结构体和类的区别(值类型和引用类型的区别)

    在swift中结构体和类有着更多的相同之处,在一般的使用中能够做到互相替换.我们可以先看看官方文档的描述: Unlike other programming languages, Swift does ...

  9. 值类型和引用类型的区别

    一.定义 引用类型表示你操作的数据是同一个,也就是说当你传一个参数给另一个方法时,你在另一个方法中改变这个变量的值,那么调用这个方法是传入的变量的值也将改变. 值类型表示复制一个当前变量传给方法,当你 ...

  10. C# 值类型和引用类型的区别

    文章目录 二者在内存中的存储方式 二者区别的补充与总结 C# 的变量类型可以分为值类型和引用类型. 常见的值类型和引用类型可参考下面这个表格: 注:C# 的 struct 是值类型,这个很容易被忽略. ...

最新文章

  1. 希望增加的BLOG功能(序)
  2. 【Web安全】DVWA+CSRF跨站请求伪造-生成链接修改password
  3. psw和fr微型计算机,微型计算机技术及应用习题答案
  4. 自然语言处理期末复习(3)-(5)模型与句法分析
  5. matlab Normally distributed random numbers in two columns
  6. Convolutional Neurons Network 训练参数与连接数计算过程
  7. 一站式学习Wireshark(转载)
  8. Python 语言程序设计(4-1)分支循环语句
  9. 数字头盔摄像头是一个智能选项
  10. [2018.10.20 T3] 巧克力
  11. 华为NP课程笔记13-PIM
  12. intersystem-M语言基础语法
  13. qq一注销账号就服务器繁忙,qq熊熊怎样解除服务器繁忙的问题
  14. SQLI DUMB SERIES-7
  15. 女生做软件测试工作怎么样?
  16. Python进行表格拆分
  17. poi向excel插入图片demo
  18. 3d云html原理,云渲染是什么原理?
  19. 什么是5g卡,5g有啥好的
  20. 新氧打出精细化运营组合拳 激活医美发展新动力

热门文章

  1. 信息学奥赛一本通(1171:大整数的因子)
  2. 信息学奥赛C++语言:输出亲朋字符串
  3. 信息学奥赛C++语言:判断两位数
  4. python使用如下方法规范化数组_python归一化多维数组的方法
  5. python中while语句的用法_全面解析Python的While循环语句的使用方法
  6. 前向星及spfa大法
  7. 时序图如何表现分支_静态时序分析圣经翻译计划——第五章:延迟计算 (上)...
  8. linux下分析cel文件,详细解析Linux scp命令的应用
  9. OpenCV:分离图像和视频的RGB通道
  10. 【转】c++优先队列(priority_queue)用法详解