序列化其实就是将一个对象的所有相关的数据保存为一个二进制文件(注意:是一个对象)
而且与这个对象相关的所有类型都必须是可序列化的所以要在相关类中加上[Serializable]特性
对象类型包括:对象本身包含的类型,父类
拥有需要的对象之后:1.将对象转换为二进制数据 使用专门的对像进行转换 BinaryFormatter
2.将二进制数据写入到文件 FileSteam
反序列化则是把二进制文件转换为一个对象
例子代码如下:
1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Linq;4usingSystem.Text;5usingSystem.Threading.Tasks;6usingSystem.IO;7usingSystem.Runtime.Serialization.Formatters.Binary;8namespaceConsoleapplication19{10classPRogram11{12staticvoidMain(string[] args)13{14Person per;//将要被序列化的对象15Console.WriteLine("------序列化与反序列化------");16Console.WriteLine("是否读取已经序列化的对象per");17stringstr =Console.ReadLine();18if(str =="yes")19{20if(!File.Exists("save.bin"))21{22Console.WriteLine("你还没有将per序列化");23return;24}25using(FileStream fs =newFileStream("save.bin", FileMode.Open))26{27BinaryFormatter bf =newBinaryFormatter();28per = bf.Deserialize(fs)asPerson;//将二进制数据转换为per对象29per.SayHi();30Console.ReadLine();31}32}33else34{35per =newPerson();36per.Name ="小李";37using(FileStream fs=newFileStream("save.bin",FileMode.Create))38{39BinaryFormatter bf =newBinaryFormatter();40bf.Serialize(fs,per);//将per对象转换成二进制数据,并保存。41Console.WriteLine("序列化成功");42Console.ReadLine();43}44}4549}50}51[Serializable]52classPerson53{54publicstringName;55publicvoidSayHi()56{57Console.WriteLine("hello {0}",Name);58}59}60}