c# 串行化与并行化

System.SerializableAttribute

串行化是指存储和获取磁盘文件、内存或其他地方中的对象。在串行化时,所有的实例数据都保存到存储介质上,在取消串行化时,对象会被还原,且不能与其原实例区别开来。

只需给类添加Serializable属性,就可以实现串行化实例的成员。

并行化是串行化的逆过程,数据从存储介质中读取出来,并赋给类的实例变量。

例:

 

 1[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时     [Serializable]

 2[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时     public class Person

 3[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时     [学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时 {

 4[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时         public Person()

 5[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时         [学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时 {

 6[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时         }

 7[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时

 8[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时         public int Age;

 9[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时         public int WeightInPounds;

10[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时     }

    下面来看一个小例子,首先要添加命名空间

using System.Runtime.Serialization.Formatters.Binary;

下面的代码将对象Person进行序列化并存储到一个文件中

 

 

 1[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             Person me = new Person();

 2[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时

 3[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             me.Age = 34;

 4[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             me.WeightInPounds = 200;

 5[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时

 6[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             Stream s = File.Open("Me.dat",FileMode.Create);

 7[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时

 8[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             BinaryFormatter bf = new BinaryFormatter();

 9[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时

10[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             bf.Serialize(s,me);

11[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时

12[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             s.Close();

    然后再举一个并行化的例子   

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             Stream s = File.Open("Me.dat",FileMode.Open);

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             BinaryFormatter bf = new BinaryFormatter();

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             object o = bf.Deserialize(s);

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             Person p = o as Person;

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             if(p != null)

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时                 Console.WriteLine("DeSerialized Person aged:{0} whight:{1}",p.Age,p.WeightInPounds);

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时             s.Close();

    如果需要对部分字段序列化部分不序列化时,我们可以按照如下设置实现

 

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时     [Serializable]

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时     public class Person

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时     [学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时 {

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时         public Person()

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时         [学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时 {

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时         }

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时         public int Age;

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时         [NonSerialized]

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时         public int WeightInPounds;

[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时     }

 

原文摘自:http://zouyou1986.blog.163.com/blog/static/17726259200924102943972/

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值