对象序列化

对象序列化是将对象转换为二进制数据(字节流),反序列化是将二进制数据还原为对象,对象是稍纵即逝的,不仅程序重启、操作系统重启会使对象消逝,

就是退出函数的范围都可能造成对象的丢失,序列化/反序列化是为了保值对象持久化

下面是一个序列化和反序列化的例子

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            //首先序列化
            //person p = new person();
            //p.Name = "张三";
            //p.Age = 12;

            //using (FileStream fs = new FileStream("1.txt", FileMode.Create, FileAccess.Write))
            //{
            //    BinaryFormatter bf = new BinaryFormatter();
            //    bf.Serialize(fs, p);
            //}
            //Console.WriteLine("完成");
            //Console.ReadKey();


            //下面是反序列化,获取对象
            using (FileStream fs = new FileStream("1.txt", FileMode.Open, FileAccess.Read))
            {
                BinaryFormatter bf = new BinaryFormatter();
             object obj= bf.Deserialize(fs);
             Console.WriteLine(((person)obj).Name);
             Console.WriteLine(((person)obj).Age);
             Console.ReadKey();
            }
        }
    }
    [Serializable]
    class person
    {
        private string _name;

        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
        private int _age;

        public int Age
        {
            get { return _age; }
            set { _age = value; }
        }
    }
}

  

序列化:对象序列化是将对象转换为二进制数据(字节流),反序列化是将二进制数据还原为对象。
为什么要序列化?
保持对象的持久化,将一个复杂的对象转换流,方便我们的存储与信息交换
要序列化的类型必须标记为:[Serializable]
该类型的父类也必须标记为: [Serializable]
该类型中的所有成员的类型也必须标记为: [Serializable]
序列化只会对类中的字段序列化,(只能序列化一些状态信息)
不建议使用自动属性。(每次生成的字段都可能不一样,影响反序列化)

转载于:https://www.cnblogs.com/ZX-LMY/p/5827036.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值