Gear.Turbo

c#序列化

早就想了解一下C#的序列化了,无奈一直没有时间,今天看了个webcast,把学到的记下来以备今后翻看 : )

using System;

using System.IO;

using System.Runtime.Serialization.Formatters.Binary;

using System.Xml.Serialization;

using System.Runtime.Serialization;

 

namespace test2

{

    [Serializable]    //标记person类可以被序列化,实际操作发现不加这个xml序列化也可以,但是binary序列化必须加

    public class person

    {

        string _name=string.Empty;

        private byte _age=default(byte);

        string _grade=string.Empty;

        public person() { }

        public void print()

        {

            Console.WriteLine("name:{0}, age:{1}, grade: {2}", _name, _age, _grade);

        }

        public void set(string name, byte age, string grade)

        {

            _name = name;

            _age = age;

            _grade = grade;

        }

 

    }

    class Serialize

    {

 

        public static void Main(string[] args)

        {

            person aperson = new person();

            aperson.set("whooffermeajob", 25, "master");

            aperson.print();

            FileStream fs = new FileStream("person.xml", FileMode.Create);

            XmlSerializer x = new XmlSerializer(typeof(person));    //xml序列化,浅序列化,只序列化public字段

            x.Serialize(fs, aperson);

            fs.Close();

            Console.Read();

 

            FileStream tfs = new FileStream("person.xml", FileMode.Open);     //反序列化,由于xml的浅序列化,所以反序列化出的对象部分数据丢失。

            person t = (person)x.Deserialize(tfs); 

            tfs.Close();

            t.print();

            Console.Read();

 

            FileStream fs2 = new FileStream("person.bin", FileMode.Create);   //Binary序列化,深序列化

            IFormatter b = new BinaryFormatter();

            b.Serialize(fs2, aperson);

            fs2.Close();

            Console.Read();

        }

       

    }

posted on 2006-12-22 23:29  lsp  阅读(1086)  评论(0)    收藏  举报

导航