登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

樱之花

叶散的时候,你明白欢聚;花谢的时候,你明白青春.

 
 
 

日志

 
 
关于我

分类中“我的实验室”是我在日常工作中的一些知识总结,有些写的比较匆忙,可能大家在阅读时会产生困扰,后期有时间我会重新整理编辑,谢谢大家的到访,您们的支持是我前进的动力!

串行化(序列化)  

2012-03-20 15:46:26|  分类: .NET/C# |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

原书上翻译为串行化,MSDN翻译为序列化

作用:

 当需要存储,或者网络传输 remoting时,数据(对象或值)需要序列化

类似于打包传输文件。

System.SerializableAttribute

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

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

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

例: 

 1    [Serializable]
 2    public class Person
 3    {
 4        public Person()
 5        {
 6        }
 7
 8        public int Age;
 9        public int WeightInPounds;
10    }
    下面来看一个小例子,首先要添加命名空间

using System.Runtime.Serialization.Formatters.Binary;

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

 

 1            Person me = new Person();
 2
 3            me.Age = 34;
 4            me.WeightInPounds = 200;
 5
 6            Stream s = File.Open("Me.dat",FileMode.Create);
 7
 8            BinaryFormatter bf = new BinaryFormatter();
 9
10            bf.Serialize(s,me);
11
12            s.Close();
    然后再举一个并行化的例子

            Stream s = File.Open("Me.dat",FileMode.Open);

            BinaryFormatter bf = new BinaryFormatter();

            object o = bf.Deserialize(s);

            Person p = o as Person;
            if(p != null)
                Console.WriteLine("DeSerialized Person aged:{0} whight:{1}",p.Age,p.WeightInPounds);

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

    [Serializable]
    public class Person
    {
        public Person()
        {
        }

        public int Age;
        [NonSerialized]
        public int WeightInPounds;
    }


对象序列化并不只是简单的把对象保存在存储器上,它可以使我们在流中传输对象,使对象变的可以像基本数据一样传递。
  评论这张
 
阅读(1772)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018