C# 序列化与反序列化

来源:互联网 发布:恶灵附身优化怎么样 编辑:程序博客网 时间:2024/06/06 03:47

序列化:将对象转化为二进制,方便存储和数据交换。

byte[ ]是任何数据的最根本表示形式,任何数据最终都是二进制的。 

反序列化:将二进制转换为对象

目的:传输数据(网络中传输数据的形式)


方法:

1、将要 序列化对象的类,标记为可被序列化的;在类的上面标记[serializable]

2、只有被[serializable]标记的类创建的对象才可以被序列化;但是这个类不可以被继承。

3、BinaryFormatter 用来序列化二进制;调用序列化的函数:.Serialize( )

通过一个流将一个二进制文件写入到指定目的;再进过反序列化读取文件


using System.IO;  //流所在的命名空间

using System.Runtime.Serialization.Formatters.Binary;  // 序列化所在的命名空间

=======================================================================

序列化            father fa1 = new father();            fa1.Name = "dad";             fa1.Profession = "peasant";            string path = @"C:\Users\Administrator\Desktop\a.txt";            using(FileStream filw=new FileStream(path,FileMode.OpenOrCreate,FileAccess.Write  ))           {            // 将对象序列成二进制,开始序列化对象             BinaryFormatter bf = new BinaryFormatter();//             bf.Serialize(filw,fa1);   // 序列化对象,通过流自动将内容写入到文件中             }
---------------------------------------------------------------------------------------------------------------------------------------------------------
反序列化

            // 接受对方发过来的数据,反序列话为对象             father ff;            using(FileStream filr=new FileStream (path,FileMode.OpenOrCreate ,FileAccess .Read ))            {                           BinaryFormatter bby = new BinaryFormatter();                ff=(father)bby.Deserialize(filr);  //  反序列话deserialize,返回的类型为object            }        [Serializable ]  // 只有被[serializable]标记的类创建的对象才可以被序列化         public class father {             string _name;         public string Name         {            get { return _name; }            set { _name = value; }         }         string _profession;         public string Profession        {            get { return _name; }            set { _name = value; }         }         void word()         {            Console.WriteLine("This is a class");         }

原创粉丝点击