天天看点

C#中的序列化和反序列化问题

1,简述:序列化和反序列化主要作用就是方便类文件在网络中的传输

                  序列化:将对象转换成为二进制的流文件

                  反序列化:读取已经被 序列化的文件还原成类或者对象

 2:案列

namespace{

 [Serializable]   //对象能够序列化所必须添加的关键字

public class Person 

    {

        public string Name { set; get; }

        public string Age { set; get; }

        public string Gender { set; get; }

        public void SayHello() 

        {

            Console.WriteLine("SayHello");

        }

    }

 class Program

    {

        static void Main(string[] args)

        {

            Person p = new Person();

            p.Name = "张三";

            p.Age = "1";

            p.Gender = "男";

            using(FileStream fs = new FileStream (@"F:\new.txt",FileMode.OpenOrCreate,FileAccess.Write))

            {

                BinaryFormatter bf = new BinaryFormatter();  //序列化必须的一个类

                bf.Serialize(fs,p);   //序列化方法

            }

            Console.WriteLine("序列化:OK");

            //在反序列化

            Person   pp = null;

            using(FileStream fs = new FileStream (@"F:\new.txt",FileMode.OpenOrCreate,FileAccess.Read))

            {

                BinaryFormatter bf = new BinaryFormatter();

                pp = (Person)bf.Deserialize(fs);  //反序列化方法

            }

            Console.WriteLine("name:"+pp.Name+" age:"+pp.Age+" Gender:"+pp.Gender);

            Console.WriteLine("反序列化:OK");

            Console.ReadKey();

            //序列化和反序列化的主要目的是为了方便对象或者类在网络中的传输

        }

    }

}