序列化与反序列化一个自定义的字段:
运行效果:
代码:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 //引入相应命名空间 7 using System.Runtime.Serialization.Formatters.Binary; 8 using System.IO; 9 10 namespace 序列化 11 { 12 class Program 13 { 14 static void Main(string[] args) 15 { 16 //------------------------ Serialize方法--------------------------------// 17 //Serialize方法:将对象序列化成流 18 //graph:对象 19 //serializeationStream:二进制流 20 //Serialize(Strwam serializeationStream, object graph); 21 22 23 24 //------------------------ Deserialize方法--------------------------------// 25 //Deserialize方法:将流反序列化为对象 26 //serializeationStream :二进制流 27 //Deserialize(Strwam serializeationStream); 28 29 30 31 //声明一个字符串变量 32 string gp = "对象"; 33 34 //定义一个对象信息 35 object obj = (object)gp; 36 37 //定义Binary实例 38 BinaryFormatter BF = new BinaryFormatter(); 39 40 //创建一个内存流存储区 41 MemoryStream ms = new MemoryStream(); 42 43 //将对象序列化为内存流 44 BF.Serialize(ms, obj); 45 46 //将当前流中的位置设为起始值 47 ms.Seek(0, SeekOrigin.Begin); 48 49 //将内存流反序列化为对象 50 object newobj = BF.Deserialize(ms); 51 52 //显示流中的内容 53 Console.WriteLine((string)newobj); 54 55 //关闭流 56 ms.Close(); 57 58 Console.ReadKey(); 59 } 60 } 61 }
=============================================================================================
序列化与反序列化一个自定义的字段:
*序列化:将对象转换为二进制流
*反序列化:将二进制流转换成对象
序列化运行结果:
反序列化运行结果:
代码:
1 using System; 2 using System.Collections.Generic; 3 using System.IO; 4 using System.Linq; 5 using System.Runtime.Serialization.Formatters.Binary; 6 using System.Text; 7 using System.Threading.Tasks; 8 9 namespace 序列化与反序列化 10 { 11 public class Program 12 { 13 static void Main(string[] args) 14 { 15 //声明一个自定义类 16 Person p = new Person(); 17 p.Name = "张三"; 18 p.Gender = '男'; 19 p.Age = 20; 20 21 22 ////序列化 23 //using(FileStream fsWrite = new FileStream(@"C:UsersAdministratorDesktop ew.txt", FileMode.OpenOrCreate, FileAccess.Write)) 24 //{ 25 // BinaryFormatter bf = new BinaryFormatter(); 26 // bf.Serialize(fsWrite, p); 27 // Console.WriteLine("序列化成功!"); 28 // Console.ReadKey(); 29 //} 30 31 //反序列化 32 using (FileStream fsRead = new FileStream(@"C:UsersAdministratorDesktop ew.txt", FileMode.OpenOrCreate, FileAccess.Read)) 33 { 34 Console.Title = ""; 35 BinaryFormatter bf = new BinaryFormatter(); 36 Person newp = (Person)bf.Deserialize(fsRead); 37 38 Console.WriteLine(newp.Name); 39 Console.WriteLine(newp.Gender); 40 Console.WriteLine(newp.Age); 41 42 Console.ReadKey(); 43 } 44 } 45 } 46 47 /// <summary> 48 /// 如果想要序列化与反序列化一个自定义的类,首先要在类上加上声明[Serializable] 49 /// </summary> 50 [Serializable] 51 public class Person 52 { 53 private string _name; 54 55 public string Name 56 { 57 get { return _name; } 58 set { _name = value; } 59 } 60 61 private char _gender; 62 63 public char Gender 64 { 65 get { return _gender; } 66 set { _gender = value; } 67 } 68 69 private int _age; 70 71 public int Age 72 { 73 get { return _age; } 74 set { _age = value; } 75 } 76 } 77 }