C#序列化

static void Main(string[] args)
        {
            Person p1 = new Person();
            p1.Name = "陈昱州";
            p1.Age = 19;
            //一:XML序列化
            //XmlSerializer xml = new XmlSerializer(typeof(Person));
            //using (FileStream fs = new FileStream("person.xml",FileMode.Create))
            //{
            //    xml.Serialize(fs,p1);
            //}
            //Console.WriteLine(xml);
            //Console.ReadKey();

            //二:二进制序列化
            //二进制序列化就是把对象变成流的过程,就是把对象变成byte[]
            //将Person对象序列化后保存到磁盘上,要操作磁盘文件,用到文件流
            //1、创建序列化器
            //BinaryFormatter bf = new BinaryFormatter();
            //1.1、创建一个文件流
            //using (FileStream fsWrite = new FileStream("person.bin",FileMode.Create))
            //{
            //    //2、开始执行序列化
            //    bf.Serialize(fsWrite, p1);
            //}
            //Console.WriteLine("序列化完毕");
            //Console.ReadKey();

            //三:json序列化
            //JavaScriptSerializer jsSer = new JavaScriptSerializer();
            //string msg = jsSer.Serialize(p1);
            //Console.WriteLine(msg);
            //Console.ReadKey();

            //反序列化
            //1、创建序列化器
            BinaryFormatter bf = new BinaryFormatter();
            //1.1创建读取文件的文件流
            using (FileStream fsread = new FileStream("person.bin",FileMode.Open))
            {
                //2.执行反序列化
                object obj = bf.Deserialize(fsread);
                Person person = obj as Person;
                Console.WriteLine(person.Age);
                Console.WriteLine(person.Name);
            }
            Console.WriteLine("OK");
            Console.ReadKey();
        }
    }

    [Serializable] //二进制序列化需要加这个标志
    public class Person
    {
        [NonSerialized] //标记不可序列化
        private string _Name;
        public string Name
        {
            get
            {
                return _Name;
            }
            set
            {
                _Name = value;
            }
        }
        public int Age
        {
            get;set;
        }
    }

猜你喜欢

转载自blog.csdn.net/cyzhah/article/details/82832358
今日推荐