眼看XX鸟的课程关于C#的知识点就要学完了,翻看网络中流传的教程还是发现了一个课程中没有讲到的知识点:序列化与反序列化

无奈还是了解一下并操作一番,以备后用吧

介绍:就是将对象信息转化为二进制信息以便于存储及在网络间的传输

看来最大的作用还是用来网络传输用的多

先来个自定义的类,这样才有能够有序列化的对象啊

 //标识该类可被序列化
[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 亲们,码字不容易,转载请注明出处。】

最新文章

  1. C++引用的作用和用法
  2. youtube视频下载
  3. Socurce Insight 快捷键
  4. ASP.NET 最佳DataGrid读取单元格的值
  5. HDU -2546饭卡(01背包+贪心)
  6. Redux管理你的React应用
  7. Zend Framework Module之多模块配置
  8. PHP常用表达式用法
  9. jboss规则引擎KIE Drools 6.3.0 Final 教程(3)
  10. php 文件系统函数及目录函数
  11. IO字节流概念
  12. python 调用js代码
  13. linux 文件压缩与解压
  14. TFA(Trace File Analyzer)的安装与使用(ORACLE版本12C)
  15. 【Winform系列】Winform控件DataGridView添加数据的几种方式
  16. [转] 实时监听input输入的变化(兼容主流浏览器)
  17. android listView 点两下才监听到
  18. CheeseZH: Stanford University: Machine Learning Ex1:Linear Regression
  19. java方法——重载2
  20. 【UVA】11825 Hackers' Crackdown(状压dp)

热门文章

  1. Xshell下漂亮的开发环境配置
  2. ftp文件操作
  3. ecshop json类的使用
  4. 关于$GLOBALS['ecs']->table()的问题?
  5. Deprecated: Call-time pass-by-reference has been deprecated in E:\wamp\www\admin\htdocs\busi.php on line 381
  6. TCP\UDP链接的异同
  7. java_method_正则校验
  8. Forms & HTML 组件 - laravelcollective/html
  9. 图解JSP与Servlet的关系
  10. Python使用Pygame.mixer播放音乐