序列化就是将对象转换为二进制流的过程。
对象序列化:把一个对象转换成二进制流的过程就叫对象序列化。
对象序列化是将对象(比如Person对象)转换为二进制数据(字节流),反序列化是将二进制数据还原为对象。对象是稍纵即逝的,不仅程序重启、操作系统重启会造成对象的消失,就是退出函数范围等都可能造成对象的消失,序列化/反序列化就是为了保持对象的持久化。就像用DV录像(序列化)和用播放器播放(反序列化)一样。
对象序列化,只能针对对象的字段进行序列化。
BinaryFormatter类有两个方法:
void Serialize(Stream stream, object graph)对象graph序列化到stream中
object Deserialize(Stream stream)将对象从stream中反序列化,返回值为反序列化得到的对象
练习:将几个int、字符串添加到ArrayList中,然后序列化到文件中,再反序列化回来
不是所有对象都能序列化,只有可序列化的对象才能序列化,在类声明上添加[Serializable],对象的属性、字段的类型也必须可序列化
序列化是将对象转换成易于传输的形式的过程。
二进制序列化:可以将序列化定义为一个将对象状态存储到存储介质的过程。在这个过程中,对象的公共字段和私有字段以及类(包括含有该类的程序集)的名称,将转换成字节流,而字节流接着将写入数据流。随后对该对象进行反序列化时,将创建原始对象的准确克隆。
在面向对象的环境中实现序列化机制时,必须多在易用性与灵活性之间做出权衡。很大程度上,这个过程可以自动完成,但前提是您对该过程拥有足够的控制权。例如,如果简单的二进制序列化不足,或者可能有特定原因决定需要对类中的哪些字段进行序列化,可能就会出现这种情况。以下章节说明了随 .NET Framework 一起提供的可靠序列化机制,并强调了根据需要自定义该过程所能使用的一些重要功能。
将对象持久化存储,磁盘、数据库
将对象复制到剪贴板
将对象通过网络传输
将对象备份(深拷贝。)
BinaryFormatter bf=…..;
4.创建一个文件流。
5..bf.Serialize(stream,对象);
BinaryFormatter bf;
3.创建文件流:
4.执行反序列化:
object obj=bf.Deserialize(stream);