zoukankan      html  css  js  c++  java
  • 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: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 }
  • 相关阅读:
    时间和时间戳的转换
    遍历Map的四种方法
    MyEclipse2015Stable3.0破解方法
    java 解压缩Zip文件 ziputil
    java Lock
    javaCountDownLatch闭锁
    JavaNIO非阻塞模式
    JavaNIO阻塞IO添加服务器反馈
    JavaNIO阻塞IO
    java三级考试理论题
  • 原文地址:https://www.cnblogs.com/KTblog/p/4515617.html
Copyright © 2011-2022 走看看