C#装箱和拆箱
2021-07-14 21:17
标签:抛出异常 复制 object类 类型 字符 继承 运算 栈内存 .net C#装箱和拆箱详解 .net装箱和拆箱是.net framework框架模型了值类型和引用类型之间的转换发的过程, 值类型和引用类型之间可以转换的原因是值类型继承于System.ValueType,但 System.ValueType类型又继承于System.Object。Object类型是万物之源。 装箱的原理: 1.当发生装箱的时候,在托管堆里分配内存,内存大小为值类型的内存大小和额外的内存,会把值类型的值复制一份,拷贝到该堆内存里即可。 拆箱原理 1.当发生拆箱的时候,会检测b是否为NULL,当为NULL时候会抛出异常,同时检测b对象里的值类型是否和转换的类型是否一致,若不一致,也会报错 拆箱和装箱之间对性能损耗很大,尽量减少拆箱和装箱的操作 C#装箱和拆箱 标签:抛出异常 复制 object类 类型 字符 继承 运算 栈内存 .net 原文地址:https://www.cnblogs.com/LGDD/p/9531960.html装箱是值类型到引用类型的转换,拆箱是引用类型到值类型之间的转换
int a =9;
Object b = a;
2.然后返回该堆内存里的地址,将该地址返回给Object对象b。
3.装箱效率低,原因为需要在堆内分配内存,同时还要拷贝值都要占用效率,性能低下。同时a的值和对象b之间并无任何关系。int c = (int)b;
2.若检测无误后,会在栈内存里分配内存,同时引用对象里的值复制一份到栈内存里,
3.拆箱性能损耗较少,和装箱性能损耗相比,较轻。同时c和对象b之间并无任何关系拆箱和装箱的使用
1,尽量减少引用类型和值类型之间的运算。例如字符串和值类型之间的加法,会发生装箱问题
2,尽量使用泛型集合和对象,避免发生装箱和拆箱的动作