序列化:将实体类以二进制或者XML的形式保存到磁盘或者内存中。

反序列化:将序列化的二进制文件和XML文件解析成实体类。

例如下面的二进制序列化与反系列化:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using System.Web.UI.WebControls;
  7. using System.Web.Services;
  8. using System.Runtime.Serialization.Formatters.Binary;
  9. using System.IO;
  10. using System.Xml.Serialization;
  11.  
  12. protected void Page_Load(object sender, EventArgs e)
  13. {
  14. fun_Serializable();//序列化
  15. fun_oppositeSerializable();//反序列化
  16. }
  17.  
  18. [Serializable]//表示该类可以被序列化
  19. public class person {
  20. public string name;
  21. public string sex;
  22. public person(string name,string sex){
  23. this.name = name;
  24. this.sex = sex;
  25. }
  26. }
  27.  
  28. //序列化与反序列化 必须是同一存在的对象。公共的 序列化与反序列化都用此对象
  29. public static string fileName = @"H:\person1.dat";//序列化成二进制数据保存到程序本地
  30. public Stream fstream = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite);
  31. public BinaryFormatter binformat = new BinaryFormatter();
  32.  
  33. /// <summary>
  34. /// 序列化
  35. /// 使用二进制序列化,必须为每一个要序列化的的类和其关联的类加上[Serializable]特性,
  36. /// 对类中不需要序列化的成员可以使用[NonSerialized]特性。
  37. /// </summary>
  38. public void fun_Serializable() {
  39. List<person> ls = new List<person>();
  40. ls.Add(new person("php1", "nan"));
  41. ls.Add(new person("php2", "nv"));
  42. binformat.Serialize(fstream, ls);
  43. //xmlFormat.Serialize(fstream, ls);
  44. ls.Clear();
  45. }
  46. /// <summary>
  47. /// 反序列化
  48. /// </summary>
  49. public void fun_oppositeSerializable()
  50. {
  51. fstream.Position = 0;
  52. List<person> ls =(List<person>)binformat.Deserialize(fstream);
  53. foreach (person p in ls)
  54. {
  55. //Console.WriteLine(p.name +":"+p.sex);//是输出到屏幕的,一般用在控制台程序中,而且输出的是一行。下一个输出在下一行显示。
  56. Response.Write(p.name + ":" + p.sex); //是输出到网页的,一般用在WebSite或者WebApplaction中,输出的不是一行。下一个输出接续上一个输出的末尾。
  57. }
  58. }

  

C#序列化/反序列化的更多相关文章

  1. php json与xml序列化/反序列化

    在web开发中对象的序列化与反序列化经常使用,比较主流的有json格式与xml格式的序列化与反序列化,今天想写个jsop的小demo,结果发现不会使用php序列化,查了一下资料,做个笔记 简单数组js ...

  2. 序列化反序列化api(入门级)

    定义: java序列化是指把Java对象转换为字节序列的过程:而Java反序列化是指把字节序列恢复为Java对象的过程. 为什么字符串通常也会进行序列化? 对象需要进行序列化的原因:保证对象的状态不变 ...

  3. python_way ,day5 模块,模块3 ,双层装饰器,字符串格式化,生成器,递归,模块倒入,第三方模块倒入,序列化反序列化,日志处理

    python_way.day5 1.模块3 time,datetime, json,pickle 2.双层装饰器 3.字符串格式化 4.生成器 5.递归 6.模块倒入 7.第三方模块倒入 8.序列化反 ...

  4. C#之你懂得的序列化/反序列化

    前言:写此文章一方面是为了巩固对序列化的认识,另一方面是因为本人最近在面试,面试中被问到“为什么要序列化”.虽然一直在使用,自己也反复的提到序列化,可至于说为什么要序列化,还真的没想过,所以本文就这样 ...

  5. springboot学习(三)——http序列化/反序列化之HttpMessageConverter

    以下内容,如有问题,烦请指出,谢谢! 上一篇说掉了点内容,这里补上,那就是springmvc的http的序列化/反序列化,这里简单说下如何在springboot中使用这个功能. 使用过原生netty ...

  6. java序列化反序列化深入探究

    When---什么时候需要序列化和反序列化: 简单的写一个hello world程序,用不到序列化和反序列化.写一个排序算法也用不到序列化和反序列化.但是当你想要将一个对象进行持久化写入文件,或者你想 ...

  7. java序列化反序列化深入探究(转)

    When---什么时候需要序列化和反序列化: 简单的写一个hello world程序,用不到序列化和反序列化.写一个排序算法也用不到序列化和反序列化.但是当你想要将一个对象进行持久化写入文件,或者你想 ...

  8. C# XML序列化/反序列化参考

    .NET提供了很不错的XML序列化/反序列化器,(它们所在的命名空间为System.Xml.Serialization)这是很方便的,下面对它的使用做一些总结,以供参考. 1,简单序列化 public ...

  9. 二进制数据的序列化反序列化和Json的序列化反序列化的重要区别

    前言:最近一个一个很奇怪的问题,很明白的说,就是没看懂,参照下面的代码: /// <summary> /// 反序列化对象 /// </summary> /// <typ ...

  10. 序列化 反序列化 MessagePack for C#

    阅读目录 快速序列化组件MessagePack介绍 简介 使用 快速开始 分析器 内置的支持类型 对象序列化 DataContract兼容性 序列化不可变对象(序列化构造器) 序列化回调 Union ...

随机推荐

  1. 检查class排座位

    在写这篇文章之前,xxx已经写过了几篇关于改检查class主题的文章,想要了解的朋友可以去翻一下之前的文章     每日一道理 灯,带有一种明亮的光,每当深夜来临,是它陪伴着你,如此默默无闻.它是平凡 ...

  2. 【30】透彻了解inlining 的里里外外

    1.inline方法相当于文本替换,不需要承担方法调用的额外开销,同时还有潜在的优势,文本替换后,编译器会进行代码优化.而对于方法调用,编译器没有能力进行代码优化. 2.显而易见,inline方法往往 ...

  3. Win8 安装Oracle 10g 提示“程序异常终止”的解决方案

    这段时间在做DRP,需要安装Oracle 10g的数据库,我的系统是win8企业版,安装Oracle 10g的时候,选择“高级安装”,提示“程序异常终止”,下面是几个解决方案,跟大家分享一下. 错误提 ...

  4. 全局唯一ID的生成方式

    一.程序直接生成: 使用jdk中的concurrent包可以轻松实现唯一数字型ID的生成,且无需考虑单例.采用高效率的CAS无需考虑synchronized关键字 import java.util.c ...

  5. 《Maven_孔浩》Maven介绍及安装

    maven是apache基金会下的一个项目管理工具. 安装步骤 1.下载并解压 2.配置环境变量M2_HOME(解压后的目录):将M2_HOME\bin加入到PATH环境变量中 3.测试:在命令行输入 ...

  6. What Influences Method Call Performance in Java?--reference

    reference from:https://www.voxxed.com/blog/2015/02/too-fast-too-megamorphic-what-influences-method-c ...

  7. MVC中使用QrCodeNet 生成二维码

    QrCodeNet下载地址:http://qrcodenet.codeplex.com/ using System.Drawing; using System.Drawing.Imaging; usi ...

  8. win7 Sendto修改

    sendto目录现在被移到了这里 %APPDATA%\Microsoft\Windows\SendTo %APPDATA%是个环境变量,具体来说是在这里: C:\users\<username& ...

  9. .Net 动态代理,AOP

    .Net 动态代理,AOP 直接上代码了. /***************************************** * author:jinshuai * * E-mail:redfox ...

  10. J2EE项目应用开发过程中的易错点

    场景一 实体类型与数据库类型不一致,在进行条件查询过程中不走索引 分析 字段值类型和数据库定义的字段类型不一致时,MySQL就会在内部做数据转化, 它的处理行为就会和我们期望的有些不一样,当我们使用整 ...