对象序列化和反序列化

一、 二进制序列化:

 

      对象的序列化是将对象转换为二进制数据(字节流),反序列化是将二进制数据还原为对象。

      BinaryFormatter

    将对象序列化到stream: void Serialize( Stream,object pdj )

    将对象从stream 中反序列化,返回值为反序列化得到的对象:   object Deserialize(Stream stream )

  

    [Serializable]
    class Person
    {
        public int Age { get; set; }
        public  string Name { get; set; }
    }
    class Program
    {
        static void Main(string[] args) { Console.WriteLine("请输入您的姓名:"); string name= Console.ReadLine(); Console.WriteLine("请输入您的年龄:"); string age = Console.ReadLine(); Person p = new Person(); p.Name = name; p.Age =Convert.ToInt32(age); //序列化,写入流 BinaryFormatter binFor = new BinaryFormatter(); using (FileStream fs = File.OpenWrite("d:/temp/data.data")) { binFor.Serialize(fs, p); //把p指向的对象序列化保存到fs流中  } //反序列化,读入流 BinaryFormatter binFor2 = new BinaryFormatter(); using (FileStream fs = File.OpenRead("d:/temp/data.data")) { Person p1=(Person)binFor2.Deserialize(fs); //把p指向的对象序列化保存到fs流中 Console.WriteLine(p1.Age + p1.Name); } Console.ReadKey(); } }

 可序列化的类注意事项:

    要序列化的类型必须标记为:[Serializable]

         该类型的父类也必须标记为:[Serializable]

          该类型中的所有成员的类型也必须标记为:[Serializable]

为什么要序列化:

           保持对象的持久化,将复杂的对象转换,方便我们的存储与信息交换

转载于:https://www.cnblogs.com/fuyouchen/p/9365814.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值