装箱、拆箱
装箱和拆箱是值类型和引用类型之间相互转换是要执行的操作。
1. 装箱在值类型向引用类型转换时发生
2. 拆箱在引用类型向值类型转换时发生
装箱
//装箱:值类型int是放在栈上的,引用类型object是放在堆上的;将栈上的东西放到堆上,就是一次装箱操作
object obj = 10;
拆箱
//拆箱:将存储在堆上的引用类型值转换为值类型
object obj = 10;
int number = (int)obj;
注:装箱操作和拆箱操作是要额外耗费cpu和内存资源的,所以在c# 2.0之后引入了泛型来减少装箱操作和拆箱操作消耗。
序列化
序列化注意事项
1、被序列化的对象的类型必须标记为[Serializable](该类的对象可以被序列化)
2、当前类的所有父类也必须标记为[Serializable]
3、这个类中的所有字段的类型也必须是可序列化
序列化导入命名空间
using System.Runtime.Serialization.Formatters.Binary;
序列化练习