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

C#里把数据类型分为两大类,值类型和引用类型

值类型

值类型就是包含实际数据的量,当定义一个值类型的变量时,C#会根据声明的类型,以栈的方式分配存储区给这个变量,变量的读写操作就直接在这块区域进行
值类型包括 :基本数据类型(int double 等),结构,枚举

引用类型

一个引用类型的变量,不存储他们所代表的真实数据,而是存储真实数据的引用。引用类型分两步创建,1,首先在栈上创建引用变量,然后在堆上创建对象本身,再把这个内存的句柄(内存的地址)赋给引用变量
引用类型包括:接口,数组,Object类型,类,委托,字符串,Null类型

总结

1.值类型存储在内存的栈中,引用类型存储在内存的堆中
2.值类型存取速度快,引用类型存取速度慢
3.值类型表示实际的数据,引用类型表示指向内存堆中的指针或者引用
4.值类型继承自System.ValueType,引用类型继承自System.Object
5.栈的内存分配自动释放;而堆在C#中需要GC释放

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • C#里把数据类型分为两大类,值类型和引用类型 值类型 值类型就是包含实际数据的量,当定义一个值类型的变量时,C#会...
    串串香阅读 1,476评论 0 0
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,391评论 11 349
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,688评论 8 265
  • 先讲一段自己的经历。 我在学校念高一的时候,学校举办“班级篮球赛”。打的是循环赛,每两个班级之间都必须打一场。那时...
    曾格格阅读 647评论 6 8
  • 生活中我们总会遇到这样的抱怨:“你都xx了,怎么还是不能xx”,生活中,很多人开始都会认为:付出就会有收获,努力终...
    巽迎论道阅读 1,731评论 0 1