04.序列化和反序列化

序列化:就是将对象转换成二进制.

反序列化:就是将二进制转换成对象

作用:传输数据.  在网络上传输数据.

序列化步骤:
(1).将 要序列化的类标记为可以被序列化[serialzable]
BinaryFormatter  可以序列化对象的类

序列化一个对象:
 
   
  1. namespace _05.序列化和反序列化的学习
  2. {
  3. class Program
  4. {
  5. static void Main(string[] args)
  6. {
  7. Person p = new Person();
  8. p.Name = "张三";
  9. p.Age = 18;
  10. p.Gender = '男';
  11. using (FileStream fsWrite = new FileStream("被有一个对象被序列化.txt", FileMode.OpenOrCreate, FileAccess.Write))
  12. {
  13. BinaryFormatter bf = new BinaryFormatter(); //序列化对象的类
  14. bf.Serialize(fsWrite, p); //将需要序列化的对象,写入到指定的文件
  15. }
  16. Console.WriteLine("序列化完成");
  17. Console.ReadKey();
  18. }
  19. }
  20. [Serializable] //将Person类标记为可以被序列化的类
  21. public class Person
  22. {
  23. private string _name;
  24. private int _age;
  25. private char _gender;
  26. public string Name
  27. {
  28. get
  29. {
  30. return _name;
  31. }
  32. set
  33. {
  34. _name = value;
  35. }
  36. }
  37. public int Age
  38. {
  39. get
  40. {
  41. return _age;
  42. }
  43. set
  44. {
  45. _age = value;
  46. }
  47. }
  48. public char Gender
  49. {
  50. get
  51. {
  52. return _gender;
  53. }
  54. set
  55. {
  56. _gender = value;
  57. }
  58. }
  59. }
  60. }

反序列一个流:
 
   
  1. namespace _05.序列化和反序列化的学习
  2. {
  3. class Program
  4. {
  5. static void Main(string[] args)
  6. {
  7. //Person p = new Person();
  8. //p.Name = "张三";
  9. //p.Age = 18;
  10. //p.Gender = '男';
  11. //using (FileStream fsWrite = new FileStream("被有一个对象被序列化.txt", FileMode.OpenOrCreate, FileAccess.Write))
  12. //{
  13. // BinaryFormatter bf = new BinaryFormatter(); //序列化对象的类
  14. // bf.Serialize(fsWrite, p); //将需要序列化的对象,写入到指定的文件
  15. //}
  16. //Console.WriteLine("序列化完成");
  17. //Console.ReadKey();
  18. //接收对方发过来的二进制(假设,模拟的)
  19. //反序列化成对象
  20. Person p = null;
  21. using (FileStream fsRead = new FileStream("被有一个对象被序列化.txt", FileMode.Open, FileAccess.Read))
  22. {
  23. BinaryFormatter bf = new BinaryFormatter(); //反序列
  24. p=(Person)bf.Deserialize(fsRead); //反序列化读取到的文件流
  25. }
  26. Console.WriteLine(p.Name);
  27. Console.WriteLine(p.Age);
  28. Console.WriteLine(p.Gender);
  29. Console.WriteLine("反序列化成功");
  30. Console.ReadKey();
  31. }
  32. }
  33. [Serializable] //将Person类标记为可以被序列化的类
  34. public class Person
  35. {
  36. private string _name;
  37. private int _age;
  38. private char _gender;
  39. public string Name
  40. {
  41. get
  42. {
  43. return _name;
  44. }
  45. set
  46. {
  47. _name = value;
  48. }
  49. }
  50. public int Age
  51. {
  52. get
  53. {
  54. return _age;
  55. }
  56. set
  57. {
  58. _age = value;
  59. }
  60. }
  61. public char Gender
  62. {
  63. get
  64. {
  65. return _gender;
  66. }
  67. set
  68. {
  69. _gender = value;
  70. }
  71. }
  72. }
  73. }







转载于:https://www.cnblogs.com/HelloZyjS/p/6044608.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值