C# - 序列化和反序列化

 

序列化与反序列化一个自定义的字段:

 

运行效果:

 

代码:

 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:\Users\Administrator\Desktop\new.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:\Users\Administrator\Desktop\new.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 }

 

posted on 2015-05-19 21:36  ultrastrong  阅读(278)  评论(0编辑  收藏  举报