c#值类型引用类型第一章
概要
本篇文章主要简单扼要的讲述值类型和引用类型更进阶的理解和使用。如果希望更多的了解和技术讨论请记得看文章末尾,望各位看官多多支持多多关注,关注和支持是我更新文章的最大动力。在这里谢谢大家。温馨提示:通篇阅读大约10分钟,后续会以一个系列方式来讲解望大家持续关注,会附上运行代码来证实理论。
内容简介
值类型和应用类型的区别
主要内容
值类型
- 值类型分配在线程栈中。
- 值类型传递的是值的本身,对值类型变量的操作不可能影响另外一个值类型的值。
- 值类型值类型对象有两种表现形式:装箱和未装箱。
- 值类型从System.ValueType派生。该类型提供了与System.Object相同的方法。但是System.ValueType重写了Equlas方法,能在两个对象的字段值完全匹配的前提下返回true。也重写了GetHashCode方法。生成哈希码是,这个重写方法所用的算法会将对象实例字段中的值考虑在内。
- 值类型变量赋值给另一个值类型变量,会逐字段的复制。
- 未装箱的值类型,不在被使用时为它分配的存储空间会被自动释放,而不是等待GC回收。
- 值类型不能作为积累性来定义,新的值类型或者新的引用类型,所以不能引入任何新的虚方法。所有方法都不能是抽象的,所有方法都是隐式密封不可重写。
- 由于值类型从System.ValueType派生的,是没有同步索引块和对象指针的,所以在内存占用上比引用类型小。操作速度比引用类型快。
引用类型
- 引用类型分配在托管堆中。
- 引用类型传递的是值的副本,两个或多个引用类型变量能引用堆中的同一个对象,所以对一个变量执行操作时可能影响另一个变量的值。
- 引用类型总是处于已装箱形式。
- 引用类型变量赋值给另一个引用类型变量,只复制内存地址。
- 引用类型可作为基类型,派生出其他派生类。
- 引用类型从System.Objectt派生的是有同步索引块和对象指针的,什么是同步索引块呢,在使用lock中大家都会new一个object对象所以lock的对象而就是因为有同步索引块而且空的objcet对象结构稳定不会发生变化所以lock才能发挥作用。那什么是对象指针呢,对象指针就是编译器告诉你现在用的是什么对象具体体现在引用类型的GetType()方法,实质上就是调用对象指针拿到对象类型。
结尾
到这里大致我们对值类型和应用类型的区别有个初步的认识,后面的文章中将会逐渐加深讲解并写Demo项目以供大家学习。 希望大家多多支持关注,不胜感激。
- E-Mail:zhuzhen723723@outlook.com
- QQ: 580749909
- Blog: https://www.cnblogs.com/justzhuzhu/
- Git: https://github.com/JusterZhu
- 知乎:https://www.zhihu.com/people/juster-zhu
- 微信公众号

c#值类型引用类型第一章的更多相关文章
- 数往知来C#之接口 值类型与引用类型 静态非静态 异常处理 GC垃圾回收 值类型引用类型内存分配<四>
C# 基础接口篇 一.多态复习 使用个new来实现,使用virtual与override -->new隐藏父类方法 根据当前类型,电泳对应的方法(成员) -->override ...
- 30天C#基础巩固-----值类型/引用类型,泛型,空合并操作符(??),匿名方法
一:值类型/引用类型的区别 值类型主要包括简单类型,枚举类型,和结构体类型等,值类型的实例通常被分配在线程堆栈上面变量保存的内容是实例数据本身.引用类型被分配在托管堆上,变量保存的是地址.引 ...
- 6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱
引言 本篇文章主要介绍.NET中6个重要的概念:栈,堆,值类型,引用类型,装箱,拆箱.文章开始介绍当你声明一个变量时,编译器内部发生了什么,然后介绍两个重要的概念:栈和堆:最后介绍值类型和引用类型,并 ...
- [No0000136]6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱
引言 本篇文章主要介绍.NET中6个重要的概念:栈,堆,值类型,引用类型,装箱,拆箱.文章开始介绍当你声明一个变量时,编译器内部发生了什么,然后介绍两个重要的概念:栈和堆:最后介绍值类型和引用类型,并 ...
- JAVASCRIPT数据类型(值类型-引用类型-类型总览)
值类型:也称为原始数据或原始值(primitive value). 这类值存储在栈(stack)中,栈是内存中一种特殊的数据结构,也称为线性表,栈按照后进先出的原则存储数据,先进入的数据被压入栈底,最 ...
- C#【堆与栈 值类型 引用类型】
先说C#中值类型和引用类型 概念: 1.值类型:数据存储在内存的堆栈中,从堆栈中可以快速地访问这些数据,因此,值类型表示实际的数据. 2.引用类型:表示指向存储在内存堆中的数据的指针或引用(包括类.接 ...
- 深入C#内存管理来分析值类型&引用类型,装箱&拆箱,堆栈几个概念组合之间的区别
C#初学者经常被问的几道辨析题,值类型与引用类型,装箱与拆箱,堆栈,这几个概念组合之间区别,看完此篇应该可以解惑. 俗话说,用思想编程的是文艺程序猿,用经验编程的是普通程序猿,用复制粘贴编程的是2B程 ...
- C# 语法二 值类型引用类型
1.值类型 2.引用类型 一 值类型 值类型存放在栈中,引用类型存放在堆中. 值类型有:数值.布尔.字符,例如:int i;bool i2;char cr='a'; 二 引用类型 大多数类型是引用类型 ...
- JavaScript:值类型 引用类型
JavaScript类型 (1)值类型:数值.布尔值.null.undefined. (2)引用类型:对象.数组.函数. 1.string var str="hongda"; v ...
随机推荐
- PHP import_request_variables() 函数
import_request_variables() 函数将 GET/POST/Cookie 变量导入到全局作用域中.该函数在最新版本的 PHP 中已经不支持.高佣联盟 www.cgewang.com ...
- luogu 4331 [BalticOI 2004]Sequence 数字序列
LINK:数字序列 这是一道论文题 我去看了一眼论文鸽的论文. 发现讲的还算能懂.可并堆的操作也讲的比较清晰. 对于这道题首先有一个小trick 我们给a数组全部减去其对应的下标这样我们求出来的b数组 ...
- Maven打包方式
转自:https://blog.csdn.net/qq_26597927/article/details/80170073 Maven打包三种方法(推荐第三种) 2018年05月02日 18:30:2 ...
- Dropzone.js文件拖拽上传提示Dropzone already attached 解决
最近收到客户的反馈,在操作上传文件有时会出现没有任何.大部分时间是正常. 重现问题后,f12打开后台控制台发现如下提示: Uncaught Error: Dropzone already attach ...
- tp3.2 新增邮件类
1.新建方法 调用发送邮件,我的目录在/admin下 2.新增邮件方法 类的发送配置功能 文件地址: 网站根目录\项目目录\Admin\Common\ 文件 名 :function.php ...
- Hexo小技巧(包括如何插入本地图片)
我在研究如何在Hexo中引用本地图片时,看到官方文档对此问题已给出了解决方法,并亲测有效.当然,我并不满足于仅仅知道这一个技巧.在大致阅读过官方文档后,我总结了之前我个人并不知道的几个关于Hexo写博 ...
- JAVA的基本程序设计结构(下)
字符串 Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义类,叫做 String. String e=""; //an empty String String ...
- 面经手册 · 第2篇《数据结构,HashCode为什么使用31作为乘数?》
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 在面经手册的前两篇介绍了<面试官都问我啥>和<认知自己的技术栈盲区 ...
- MinIO很强-让我放弃FastDFS拥抱MinIO的8个理由
目前可用于文件存储的网络服务选择有很多,比如阿里云OSS.七牛云.腾讯云等等,但是收费都有点小贵.为了帮公司节约成本,之前一直是使用fastDFS作为文件服务器,准确的说是图片服务器.直到我发现了Mi ...
- Arm pwn学习
本文首发于“合天智汇”公众号 作者:s0xzOrln 声明:笔者初衷用于分享与普及网络知识,若读者因此作出任何危害网络安全行为后果自负,与合天智汇及原作者无关! 刚刚开始学习ARM pwn,下面如有错 ...