值类型,引用类型,装箱,拆箱
来源:互联网 发布:销售数据统计好处 编辑:程序博客网 时间:2024/06/11 03:08
- 值类型包括原类型(Sbyte、Byte、Short、Ushort、Int、Uint、Long、Ulong、Char、Float、Double、Bool、Decimal)、枚举(enum)、结构(struct),引用类型包括:类、数组、接口、委托、字符串等。
- 值型就是在栈中分配内存,在申明的同时就初始化,以确保数据不为NULL;
引用型是在堆中分配内存,初始化为null,引用型是需要GARBAGE COLLECTION来回收内存的,值型不用,超出了作用范围,系统就会自动释放! 值类型的变量包含自身的数据,而引用类型的变量是指向数据的内存块的,并不是直接存放数据。对于值类型,每个变量都有一份自己的数据复制,对另一个值类型变量的操作并不影响这一个变量的值。 而对于引用类型,两个变量有可能引用同一对象,因此对一个变量的操作会影响到另一个变量。
如果要把一个值类型数据放到堆上,就需要装箱操作;反之,把一个放在堆上的值类型数据取出来,则需要进行拆箱操作。
- 装箱是将值类型转换为 object 类型或由此值类型实现的任何接口类型的过程。 当 CLR 对值类型进行装箱时,会将该值包装到 System.Object 内部,再将后者存储在托管堆上。 取消装箱将从对象中提取值类型。 装箱是隐式的;取消装箱是显式的。 装箱和取消装箱的概念是类型系统 C# 统一视图的基础,其中任一类型的值都被视为一个对象。
- 装箱用于在垃圾回收堆中存储值类型。 装箱是值类型到 object 类型或到此值类型所实现的任何接口类型的隐式转换。 对值类型装箱会在堆中分配一个对象实例,并将该值复制到新的对象中。
取消装箱是从 object 类型到值类型或从接口类型到实现该接口的值类型的显式转换。 取消装箱操作包括:
检查对象实例,以确保它是给定值类型的装箱值。
将该值从实例复制到值类型变量中。
- 要在运行时成功取消装箱值类型,被取消装箱的项必须是对一个对象的引用,该对象是先前通过装箱该值类型的实例创建的。 尝试取消装箱 null 会导致 NullReferenceException。 尝试取消装箱对不兼容值类型的引用会导致InvalidCastException。
- 装箱拆箱过程:
- 为什么要减少装箱和拆箱操作:一个就是对于堆的操作效率比较低;另一个就是对于堆上分配的内存资源,需要GC来回收,从而降低程序效率。
0 0
- 值类型,引用类型,装箱,拆箱
- 堆,栈,值类型,引用类型,装箱,拆箱
- c# 值类型和引用类型的区别,装箱,拆箱。
- 值类型、引用类型、拆箱装箱
- 很不错的C#类型讲解,堆,栈,值类型,引用类型,装箱,拆箱
- 很不错的C#类型讲解,堆,栈,值类型,引用类型,装箱,拆箱
- C# 引用类型、值类型与拆箱、装箱
- 引用类型和值类型(装箱和拆箱)
- 6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱
- 6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱
- 6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱
- 了解c#中 值类型/引用类型,装箱/拆箱,Object类
- 深入C#内存管理来分析 值类型、引用类型、装箱、拆箱、堆栈几个概念组合
- 深入C#内存管理来分析 值类型、引用类型、装箱、拆箱、堆栈几个概念组合
- 6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱
- 6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱
- [转]6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱
- 6个重要的.NET概念栈,堆,值类型,引用类型,装箱,拆箱
- 第六章 BIRT普通网格报表(续) .
- UVA 10258 Contest Scoreboard
- java.sql.Clob类型转java.lang.String类型
- 通过批处理修改FTP账号和密码
- oracle 数据还原用户名不同处理办法
- 值类型,引用类型,装箱,拆箱
- 第六章 BIRT普通网格报表(续2) .
- 山穷水尽疑无路
- HDU1429胜利大逃亡(续)&&HDU 1885 Key Task BFS+状态压缩+水
- 第七章 BIRT分组报表 .
- Django在Win7下的安装及创建项目hello word简明教程
- Xcode 5.1安装插件:规范注释生成器VVDocumenter
- 使用charles proxy for Mac来抓取手机App的网络包
- 对摄像头提取的图像进行Canny算法