C#中的序列化和反序列化

  
序列化就是把一个对象转换为可以保存的形式,以利于保存和传输
 反序列化就是把这种可保存的形式恢复为内存中的对象
 .net提供了两种序列化的方法
 1,二进制序列化 可以保留一个对象的所有的数据                     
 对于应用程序不同调用之间保留对象状态很有用
 二进制序列化 使用BinaryFormatter
 例:
 MyClass me = new MyClass(24, 1.76);
 me.Name = "Ralph";
 // 序列化
 IFormatter formatter = new BinaryFormatter();
 Stream stream = new FileStream("MyFile.txt", FileMode.Create,    
FileAccess.Write, FileShare.None);
 formatter.Serialize(stream, me);
 stream.Close();
 // 反序列化
 stream = new FileStream("MyFile.txt", FileMode.Open);
 MyClass metoo = (MyClass)formatter.Deserialize(stream);
 stream.Close();
 
把类对象me序列化,并保存在文件MyFile.txt中,它序列化了对象中的所有
字段private public 和 protected,即反序列化后所有的 字段值是不变的
 2,XML序列化    仅序列化公共属性和字段,而且不保留类型信息      
 不同系统之间的共享数据很有用
 XML序列化 XmlSerializer
 例:
 MyClass me = new MyClass(24, 1.76);
 me.Name = "Ralph";
// 序列化
 XmlSerializer srl = new XmlSerializer(typeof(MyClass));
 StreamWriter wrt = new StreamWriter("MyFile.xml");
 srl.Serialize(wrt, me);
 wrt.Close();
 // 反序列化
 StreamReader rdr = new StreamReader("MyFile.xml");
 MyClass notme = (MyClass)srl.Deserialize(rdr);
 rdr.Close();
 
把类对象me序列化,并保存在文件MyFile.xml中,但它与二进制序列化不同
的是它只序列化了对象中的public字段,既反序列化后只 有public字段的值
是不变的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值