C#中的序列化与反序列化
2024-10-11 01:39:16
眼看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 亲们,码字不容易,转载请注明出处。】
最新文章
- C++引用的作用和用法
- youtube视频下载
- Socurce Insight 快捷键
- ASP.NET 最佳DataGrid读取单元格的值
- HDU -2546饭卡(01背包+贪心)
- Redux管理你的React应用
- Zend Framework Module之多模块配置
- PHP常用表达式用法
- jboss规则引擎KIE Drools 6.3.0 Final 教程(3)
- php 文件系统函数及目录函数
- IO字节流概念
- python 调用js代码
- linux 文件压缩与解压
- TFA(Trace File Analyzer)的安装与使用(ORACLE版本12C)
- 【Winform系列】Winform控件DataGridView添加数据的几种方式
- [转] 实时监听input输入的变化(兼容主流浏览器)
- android listView 点两下才监听到
- CheeseZH: Stanford University: Machine Learning Ex1:Linear Regression
- java方法——重载2
- 【UVA】11825 Hackers' Crackdown(状压dp)
热门文章
- Xshell下漂亮的开发环境配置
- ftp文件操作
- ecshop json类的使用
- 关于$GLOBALS['ecs']->;table()的问题?
- Deprecated: Call-time pass-by-reference has been deprecated in E:\wamp\www\admin\htdocs\busi.php on line 381
- TCP\UDP链接的异同
- java_method_正则校验
- Forms &; HTML 组件 - laravelcollective/html
- 图解JSP与Servlet的关系
- Python使用Pygame.mixer播放音乐