博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
序列化
阅读量:6675 次
发布时间:2019-06-25

本文共 2350 字,大约阅读时间需要 7 分钟。

序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时候把这个文件再转化成原来的对象使用。

当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为对象。
  把对象转换为字节序列的过程称为对象的序列化。
  把字节序列恢复为对象的过程称为对象的反序列化。
  在这里插入图片描述
  
在这里插入图片描述

class Program    {        static void Main(string[] args)        {            //BinaryFormatter将对象序列化到文件中            People people=new People("唐孝辉",5000);            using (FileStream  wirter=new FileStream("本地文件",FileMode.Create,FileAccess.ReadWrite))            {                BinaryFormatter bf1=new BinaryFormatter();                bf1.Serialize(wirter,people);            }            People newPeople = null;            //BinaryFormatter将文件中的数据反序列化出来            using (FileStream reader=new FileStream("本地文件",FileMode.Open,FileAccess.ReadWrite))            {                BinaryFormatter bf2=new BinaryFormatter();               newPeople=(People)bf2.Deserialize(reader);            }            Console.WriteLine(newPeople.Name+":"+newPeople.ID);            Console.ReadKey();        }    }      [Serializable]   public class People    {        public string Name { get; set; }        public int ID { get; set; }        public People(string name,int id)        {            this.Name = name;            this.ID = id;        }    }

序列化:

1.得到一个存储对象的类型

2.创建一个写入文件流

3.定义要序列化的类型

4.调用序列化方法

反序列化:

1.定义一个装载对象的类型

2.创建一个读出文件流

3.定义要反序列化的类型

4.调用反序列化方法

BinaryFormatter类进行序列化和反序列化,以缩略型二进制格式写到一个文件中去,速度比较快,而且写入后的文件已二进制保存有一定的保密效果。标记为NonSerialized的其他所有成员都能序列化。

使用json序列化

//使用JavaScriptSerializer方式需要引入的命名空间,这个在程序集System.Web.Extensions.dll.中//using System.Web.Script.Serialization; class Program    {        static void Main(string[] args)        {                     People people = new People("唐孝辉", 5000);            JavaScriptSerializer js=new JavaScriptSerializer();            //序列化            string jsonData=js.Serialize(people);             //反序列化:            People newPeople = null;            newPeople= js.Deserialize
(jsonData); Console.WriteLine(newPeople.Name + ":" + newPeople.ID); Console.ReadKey(); } } [Serializable] public class People { public People() { } public string Name { get; set; } public int ID { get; set; } public People(string name,int id) { this.Name = name; this.ID = id; } }

转载地址:http://ecrxo.baihongyu.com/

你可能感兴趣的文章
Aix学习之ODM
查看>>
第二天的收获-----c中小问题
查看>>
【错误异常】 Maven出现错误No plugin found for prefix 'jetty' in the current
查看>>
扩展欧几里德算法
查看>>
openoffice启动8100端口
查看>>
cnetos 6.0下Chage的使用方法来提升系统安全级别
查看>>
tomcat启动没有8080端口
查看>>
ubuntu 16.04 安装lamp
查看>>
Javascript的匿名函数
查看>>
OC中类的属性与成员变量的区别
查看>>
SMTP命令邮件投递(无身份认证)
查看>>
Nginx + MySQL + PHP + Xcache + Memcached
查看>>
使用Windows live movie maker轻松与朋友分享视频
查看>>
我的友情链接
查看>>
数据库死锁的类型
查看>>
找水王
查看>>
grep及正则表达式
查看>>
MongoDB常用命令大全
查看>>
Python程序的执行过程
查看>>
Proxmox-VE搭配Ceph存储组建高可用虚拟化平台
查看>>