C#学习笔记(二十三):串行化和并行化

System.SerializableAttribute

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

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

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

例:

 

 1 None.gif     [Serializable]
 2 None.gif     public   class  Person
 3 ExpandedBlockStart.gifContractedBlock.gif     dot.gif {
 4InBlock.gif        public Person()
 5ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 6ExpandedSubBlockEnd.gif        }

 7InBlock.gif
 8InBlock.gif        public int Age;
 9InBlock.gif        public int WeightInPounds;
10ExpandedBlockEnd.gif    }

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

using System.Runtime.Serialization.Formatters.Binary;

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

   

 

 1 None.gif             Person me  =   new  Person();
 2 None.gif
 3 None.gif            me.Age  =   34 ;
 4 None.gif            me.WeightInPounds  =   200 ;
 5 None.gif
 6 None.gif            Stream s  =  File.Open( " Me.dat " ,FileMode.Create);
 7 None.gif
 8 None.gif            BinaryFormatter bf  =   new  BinaryFormatter();
 9 None.gif
10 None.gif            bf.Serialize(s,me);
11 None.gif
12 None.gif            s.Close();

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

   
None.gif             Stream s  =  File.Open( " Me.dat " ,FileMode.Open);
None.gif
None.gif            BinaryFormatter bf 
=   new  BinaryFormatter();
None.gif
None.gif            
object  o  =  bf.Deserialize(s);
None.gif
None.gif            Person p 
=  o  as  Person;
None.gif            
if (p  !=   null )
None.gif                Console.WriteLine(
" DeSerialized Person aged:{0} whight:{1} " ,p.Age,p.WeightInPounds);
None.gif
None.gif            s.Close();

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

 

None.gif     [Serializable]
None.gif    
public   class  Person
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        
public Person()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
public int Age;
InBlock.gif        [NonSerialized]
InBlock.gif        
public int WeightInPounds;
ExpandedBlockEnd.gif    }

转载于:https://www.cnblogs.com/Bear-Study-Hard/archive/2006/04/07/369471.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值