对象序列化和反序列化

对象序列化有很多方式,在这里我只讲用Xml序列化,我们从开始序列化讲起,首先,你要在需要被序列化的类前面写上[Serializable],表示该类的实例可以被序列化,其次在要执行序列化的代码去中写入using System.Xml.Serialization;(xml序列化必须的)using System.IO;(文件流的操作)

下面具体讲序列化和反序列化的代码实现:

实现之前,我这里先定义一个简单的People类

下面是序列化和反序列化的具体代码:

单击两个button分别执行,其中private void button1_Click_1(object sender, EventArgs e)执行序列化,private void button2_Click(object sender, EventArgs e)执行反序列化。

 

但是我在具体操作该代码时发现了问题,就是当我序列化一个对象是,其对象的whf属性应该是whf,但是在具体的xml文件里却找不到whf的值,当你在People类中修改whf属性值时,其反序列化的结果是对象的whf属性立即改变了,然后仔细一想,原来在对象反序列化时,是先建立一个对象,然后从xml文件里找其公共属性字段的值,而那些没有记录在文件里的是靠实例化对象时的返回值的,比如我在一开始whf属性里是get{return "whf";},这样序列化后,在xml文件里是找不到whf属性的,当反序列化对象时,如果先在People类中修改whf属性,比如whf属性改为get{return "matt";},反序列化后,对象的whf属性就改为matt了,不知这样说大家能理解不,呵呵。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值