C#中的序列化与反序列化
2015-11-05 00:48
344 查看
眼看XX鸟的课程关于C#的知识点就要学完了,翻看网络中流传的教程还是发现了一个课程中没有讲到的知识点:序列化与反序列化
无奈还是了解一下并操作一番,以备后用吧
介绍:就是将对象信息转化为二进制信息以便于存储及在网络间的传输
看来最大的作用还是用来网络传输用的多
先来个自定义的类,这样才有能够有序列化的对象啊
看到[Serializable]([sɪərəlaɪ'zəbl])百度之得其意思:没错,就是序列化的意思+_+
需要将[Serializable]放到你要序列化的类前面,不然的话是不能序列化的
如果序列化的对象的类前面没有[Serializable]系统会抛出异常
创建好要序列化的类之后,我们在测试类中实现它
我们看到执行序列化的方法时使用的BinaryFormatter类,需要引入命名空间
using System.Runtime.Serialization.Formatters.Binary;
好长的命名空间,那是记住这个类吧-BinaryFormatter([ˈbaɪnəri]['fɔ:mætə])然后使用组合键:Shift+Alt+F10 回车
BinaryFormatter对象的Serialize()方法
文件流和对象参数
生成了这么一堆人基本上看不懂的乱码,反正机器能看懂就行了(*^__^*) 嘻嘻……
====假设我们把序列化好的文件打包发给另一个人,另外一个人怎么用呢?没错,就是反序列化
假设另外的那个人已经有Person类了
反序列化的时候使用BinaryFormatter对象的Deserialize方法就可以了
【来自 乐智的菜园子:www.cnblogs.com/AIThink 亲们,码字不容易,转载请注明出处。】
无奈还是了解一下并操作一番,以备后用吧
介绍:就是将对象信息转化为二进制信息以便于存储及在网络间的传输
看来最大的作用还是用来网络传输用的多
先来个自定义的类,这样才有能够有序列化的对象啊
//标识该类可被序列化 [Serializable] public class Person { private string _name; public string Name { get { return _name; } set { _name = value; } } }
看到[Serializable]([sɪərəlaɪ'zəbl])百度之得其意思:没错,就是序列化的意思+_+
需要将[Serializable]放到你要序列化的类前面,不然的话是不能序列化的
如果序列化的对象的类前面没有[Serializable]系统会抛出异常
创建好要序列化的类之后,我们在测试类中实现它
Person p = new Person(); p.Name = "张三"; //开始序列化 using (FileStream fs = new FileStream(@"C:\Users\Jack\Desktop\object.txt", FileMode.OpenOrCreate, FileAccess.Write)) { BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(fs, p); } Console.WriteLine("序列化成功!");
我们看到执行序列化的方法时使用的BinaryFormatter类,需要引入命名空间
using System.Runtime.Serialization.Formatters.Binary;
好长的命名空间,那是记住这个类吧-BinaryFormatter([ˈbaɪnəri]['fɔ:mætə])然后使用组合键:Shift+Alt+F10 回车
BinaryFormatter对象的Serialize()方法
文件流和对象参数
生成了这么一堆人基本上看不懂的乱码,反正机器能看懂就行了(*^__^*) 嘻嘻……
====假设我们把序列化好的文件打包发给另一个人,另外一个人怎么用呢?没错,就是反序列化
假设另外的那个人已经有Person类了
Person p = null; using (FileStream fs = new FileStream(@"C:\Users\Jack\Desktop\object.txt", FileMode.OpenOrCreate, FileAccess.Read)) { BinaryFormatter bf = new BinaryFormatter(); //需要将Object类型强转Person类型 p = (Person)bf.Deserialize(fs); Console.WriteLine("反序列化成功!"); Console.WriteLine(p.Name); }
反序列化的时候使用BinaryFormatter对象的Deserialize方法就可以了
【来自 乐智的菜园子:www.cnblogs.com/AIThink 亲们,码字不容易,转载请注明出处。】
相关文章推荐
- XPath语法 在C#中使用XPath示例
- C#GridView中RadioButton选中显示不正确问题!
- C# trim split dataGrid
- C#总结项目《影院售票系统》编写总结二
- 第一次C#作业
- C#学习单向链表和接口 IList<T>
- Parallel dev: .NET SynchronizationContext 二三事
- C# DateTime结构的常用方法
- C#学习之路,学习笔记 第八章 8.4重载
- C# 编写短信发送Window服务
- C#学习之路,学习笔记 第八章 8.5this关键字 和 8.6索引
- C#学习之路,学习笔记 第八章 面向对象编程:类和对象(二)8.3.1const常量 和 8.3.2readonly常量
- C#异步编程
- C#中将DataGridView中查询出来的数据使用DataTable导出为Excel表格(通过NPOI)
- C# 时间转换 Windows的toFileTimeutc时间转换
- C# Listview 控件 加 button按钮的实现
- C#写一个简单的邮件发送程序
- C#中多重继承
- C# 窗体加载完成才显示
- C# 生成字符串的 CheckSum