- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C#二进制序列化.ppt
序列化基础知识 什么是序列化(Serialization) 序列化可被定义为将对象的状态存储到存储媒介中的过程 序列化:对象的公共字段和私有字段以及类的名称(包括包含该类的程序集)都被转换为字节流,然后写入数据流 反序列化:创建原始对象的精确复本 为何使用序列化 将对象的状态永久保存在存储媒体中,以便可以在以后重新创建精确的副本 通过值将对象从一个应用程序域发送到另一个应用程序域中 基本序列化 二进制序列化 BinaryFormatter可以非常有效地为对象生成简洁的字节流 ,对于序列化将在 .NET Framework 上被反序列化的对象而言十分理想(即不需要移植) 在反序列化一个对象时不调用构造函数 如果需要可移植,需要用SoapFormatter 代替 Serializable 属性不能被继承,即使父类有这属性,子类也必须手动添加,若一个对象中包含子对象,子对象也必须是 Serializable XML序列化 将对象序列化到 XML 文档中和从 XML 文档中反序列化对象 对象中的数据是用编程语言构造来描述的,如类、字段、属性 (Property)、基元类型、数组,甚至 XmlElement 或 XmlAttribute 对象形式的嵌入 XML XML 序列化仅将对象的公共字段和属性值序列化为 XML 流。XML 序列化不包括类型信息 实验三数据保存、恢复的实现 在FormClosing中Serialize 在Form_Load中DeSerialize 序列化的对象? 逐系 整个Treeview 别忘了?! ——为Student类添加Serializable属性标记 [Serializable] //指示此类可以系列化 public class student { public string no; public string name; public bool sex; public string address; public string phone; public student(string no, string name, bool sex, string address, string phone) { this.no = no; this.name = name; this.sex = sex; this.address = address; this.phone = phone; } } 所需引入的命名空间 using System.IO; using System.Runtime.Serialization.Formatters.Binary; * * //step1:定义一个支持序列化的类 [Serializable] public class MyObject { public int n1 = 0; public int n2 = 0; public String str = null; } //step2:将对象序列化到文件中 MyObject obj = new MyObject(); obj.n1 = 1; obj.n2 = 24; obj.str = Some String; IFormatter formatter = new BinaryFormatter(); Stream stream = new FileStream(MyFile.bin, FileMode.Create, FileAccess.Write, FileShare.None); formatter.Serialize(stream, obj); stream.Close(); //step3:在需要时从文件中反序列化对象 IFormatter formatter = new BinaryFormatter(); Stream stream =new FileStream(MyFile.bin, FileMode.Open, FileAccess.Read, FileShare.Read); MyObject obj = (MyObject) formatter.Deserialize(stream); stream.Close(); // Heres the proof. Console.WriteLine(n1: {0}, obj.
文档评论(0)