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

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

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

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

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

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

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

1 //标识该类可被序列化 2     [Serializable] 3     public class Person  4     { 5         private string _name; 6  7         public string Name 8         { 9             get { return _name; }10             set { _name = value; }11         }12 13     }

看到[Serializable]([sɪərəlaɪ'zəbl])百度之得其意思:没错,就是序列化的意思+_+

需要将[Serializable]放到你要序列化的类前面,不然的话是不能序列化的

如果序列化的对象的类前面没有[Serializable]系统会抛出异常

创建好要序列化的类之后,我们在测试类中实现它

1  Person p = new Person();2             p.Name = "张三";3             //开始序列化4             using (FileStream fs = new FileStream(@"C:\Users\Jack\Desktop\object.txt", FileMode.OpenOrCreate, FileAccess.Write))5             {6                 BinaryFormatter bf = new BinaryFormatter();7                 bf.Serialize(fs, p);8             }9             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方法就可以了

【来自 乐智的菜园子: 亲们,码字不容易,转载请注明出处。】

转载于:https://www.cnblogs.com/AIThink/p/4937937.html

你可能感兴趣的文章
ZOJ 3891 K-hash
查看>>
一个TensorFlow例子
查看>>
Java 设计模式之单例
查看>>
PAT 1076
查看>>
Mybatis(1) 创建Mybatis HelloWorld
查看>>
Ubuntu包管理命令 dpkg、apt和aptitude
查看>>
给刚通过51入门的新人讲讲S12(MCS12XS128)与51的差别
查看>>
使用命令xrandr设置当前系统的显示分辨率及显示的旋转脚本
查看>>
redis CONFIG REWRITE介绍
查看>>
第一次作业
查看>>
WPF 仿IPhone滑块开关 样式 - CheckBox
查看>>
Unable to create an instance of the Java Virtual Machine
查看>>
jQuery实现鼠标经过时高亮,同时其他同级元素变暗的效果
查看>>
深入理解类成员函数的调用规则(理解成员函数的内存为什么不会反映在sizeof运算符上、类的静态绑定与动态绑定、虚函数表)...
查看>>
div最低高度设置
查看>>
Chrome浏览器正常,IE下界面却乱了
查看>>
关于不断刷新界面jsp+ajax
查看>>
课程总结
查看>>
storm常见问题
查看>>
java开发中使用的工厂设计模式
查看>>