浅谈.NET中的类型和装箱、拆箱原理
- 变量赋值 值类型的变量将直接获得一个真实的数据副本,而对引用类型的赋值仅仅是吧对象的引用赋给变量,这样就可能导致多个变量引用到一个实际对象实例上(这里需要各位博友去理解.NET对String的一些优化机制,本质和这个不相悖)。
- 内存分配 引用类型的对象将在堆上分配内存,而值类型的对象则会在堆栈上分配内存。(内存如何分配:堆栈上存的是什么?值类型变量和引用类型变量的引用。堆上存的是什么?引用类型的对象(包括了类型对象指针和同步块索引,注意只是个索引,这是.NET为线程同步提出的一种折中的办法。))。大对象堆(也是堆,一种特别的堆)什么的这里不做介绍。但必须说明的是:堆栈的空间有限,但运行效率却比堆要高得多!!!
- 由于所有的值类型都继承自System.ValueType,而System.ValueType继承自System.Object,并重新实现了基类System.Object的一个虚方法Equals,而引用类型并没有重写。
- 在堆上分配一个内存空间,大小等于需要装箱的值类型对象的大小加上两个引用类型对象都拥有的成员:类型对象指针和同步块引用。
- 把堆栈上的值类型对象复制到堆上新分配的对象。
- 返回一个指向堆上新对象的引用,并且存储到堆栈上被装箱的那个值类型的对象里。
- 获取已装箱对象中各个字段的地址,这个过程就是“拆箱”
- 值类型的格式化输出
- System.Object类型的容器
using System; namespace MaxValueTest {/// <summary>/// D201////// </summary>class Program{static void Main(string[] args){int i = Int32.MaxValue;Console.WriteLine("Int32的最大值是"+i);//引发了一次不必要的装箱操作Console.WriteLine("Int32的最大值是" + i.ToString());//ok Console.ReadKey();}} }
转载于:https://www.cnblogs.com/minily/p/7390580.html
浅谈.NET中的类型和装箱、拆箱原理相关推荐
- java自动装箱拆箱原理
java自动装箱拆箱原理 看了很多博主都没写原理,只是浅显地说了自动装箱拆箱的含义,我就把这个必须知道的知识写一下吧 1.自动装箱 以int -> Integer为例,Integer integ ...
- 6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱
引言 本篇文章主要介绍.NET中6个重要的概念:栈,堆,值类型,引用类型,装箱,拆箱.文章开始介绍当你声明一个变量时,编译器内部发生了什么,然后介绍两个重要的概念:栈和堆:最后介绍值类型和引用类型,并 ...
- 包装类型、装箱拆箱、基本类型速度比较
首先是包装类型 Long sum = Long.valueOf(0);long t1 = System.currentTimeMillis();for (Long i = Long.valueOf(0 ...
- Java 自动装箱拆箱原理及避坑
简单记录一下自动拆装箱原理以及使用过程中要注意的坑. 目录 1.Java基本数据类型 2.自动拆箱.自动装箱 3.避坑问题 1.Java基本数据类型 基本数据类型和与之对应的包装类型: boolean ...
- 浅谈java中的ServerSocket和Socket的通信原理实现聊天及多人聊天
聊天,QQ,微信,陌陌很多的即时通讯的软件,不管是桌面端还是移动端,在当今社交的时代都是不可或缺的一部分.这时候说Socket和ServerSocket感觉有点老调重弹感觉,相信很多人早就知道如何使用 ...
- 浅谈linux中的根文件系统(rootfs的原理和介绍)
转自:点击打开 linux中有一个让很多初学者都不是特别清楚的概念,叫做"根文件系统".我接触linux前前后后也好几年了,但是对这个问题,至今也不是特别的清楚,至少没法给出一个很 ...
- 栈,堆,值类型,引用类型,装箱,拆箱 .NET中 6个重要的概念
== 转载于:https://www.cnblogs.com/xiao-hei/p/3847525.html
- js包装类型的装箱拆箱
https://www.jb51.net/article/155820.htm https://juejin.im/post/5cbaf130518825325050fb0a https://juej ...
- CLR via C# 中关于装箱拆箱的摘录
装箱: 为了将一个值类型转换成一个引用类型,要使用一个名为装箱(boxing)的机制.下面总结了对值类型的一个实例进行装箱操作时在内部发生的事情. 1.在托管堆中分配好内存.分配的内存量是值类型的各 ...
最新文章
- 首次揭秘!大麦如何应对超大规模高性能选座抢票?
- uvalive5983(二分+dp)
- javaSE各阶段练习题--工具类-常用类-递归-包装类-内部类
- 2020年中国地摊经济行业报告
- CSS如何实现数字分页效果
- killer网卡服务器未运行,外星人killer control center服务未运行怎么解决?
- Word删除指定一页的页码
- iphone导出视频 无法连接到设备_如何解决爱思助手无法识别设备或连接超时等故障?...
- vue脚手架 编译速度慢95% emitting CopyPlugin
- 浅析AI边缘计算的车辆/车牌识别技术研发及场景应用
- 平台电子签章实现方法
- Java爬取12306
- 服务器禁止访问文件,服务器文件夹访问权限设置 控制访问权限方法
- 五年,你敢说自己是高级开发么?
- 读书笔记《游戏改变世界》
- 小册上新 | 掌握 SpringBoot 场景整合,成为开发多面手!
- 神经网络是如何进行预测的?
- 中考大数据大连79_中考大数据 | 2018年大连部分重点高中生源情况汇总!
- 大工20春计算机原理在线作业二,大工20春《电力电子技术》在线作业2(答案100分)...
- 【小白视角】大数据基础实践(五) MapReduce编程基础操作
热门文章
- aspose.words 表格内容水平居中_CSS十五种方法教你如何居中一个元素
- 怎么屏蔽跳出来的登陆窗口_我是怎么从机构跳出来做兼职的(二)
- Java数据结构和算法:哈夫曼树
- sqlitepython导入数据_python从sqlite读取并显示数据的方法
- 信捷步进指令的使用_【笔记】信捷plc应用,指令篇
- Linux下的awk用法详解
- php try 中 抛出异常处理,php中try catch捕获异常实例详解
- 安卓给string对象赋值_String 面试题!看完让你恍然大悟!
- java关闭inputstream_关闭Java InputStreams
- nonlocal python3_Python3中 对local和nonlocal 关键字的认识