C#语言特性


相关博客:
装箱拆箱内部:https://blog.youkuaiyun.com/qiaoquan3/article/details/51439726
GC:https://blog.youkuaiyun.com/sinat_40003796/article/details/128041837

值类型与引用类型

值类型:直接存储数据;作为局部变量时,存储在栈上;作为成员变量时,存储在堆上;
·内置值类型【btye (u)short (u)int (u)long bool 】
·用户定义的值类型 【struct】
·枚举【enum】

引用类型:持有数据的引用;局部变量时,存储在堆上
·string int[] class interface
·指针类型、接口类型
·子描述类型【数组、类类型(用户定义的类、已装箱的值类型、委托)】

装箱拆箱

装箱:值类型转引用类型;内存分配GC,尽量避免。
·一次装箱要进行:分配内存和拷贝数据这两项比较影响性能的操作。
··调用一个含类型为Object的参数的方法,将一个值类型(如Int32)传入:可以通过重载函数来避免;
··非泛型的容器,将元素类型定义为Object,将值类型数据加入容器:可以通过泛型来避免;
·想改造的代码为第三方程序集,只能装箱。

拆箱:引用类型转值类型。

垃圾回收(GC)机制

·让内存利用率更高。
·C#内置了自动垃圾回收GC,变量失去引用后 GC 会帮我们自动回收,但不包括数据流,和一些数据库的连接,这些需要手动释放资源,调用 Close() 或者 Dispose() 方法进行手动回收。
·GC 只会回收的内存,堆中的没有被引用或者null的对象才会被回收。
·值类型在中的使用完马上就会被释放,不需要 GC 进行处理;
静态的变量也不会被回收。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值