System.SerializableAttribute
串行化是指存储和获取磁盘文件、内存或其他地方中的对象。在串行化时,所有的实例数据都保存到存储介质上,在取消串行化时,对象会被还原,且不能与其原实例区别开来。
只需给类添加Serializable属性,就可以实现串行化实例的成员。
并行化是串行化的逆过程,数据从存储介质中读取出来,并赋给类的实例变量。
例:
1
[Serializable]
2
public class Person
3![[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时 [学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
{
4
public Person()
5![[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时 [学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时](https://i-blog.csdnimg.cn/blog_migrate/3112b7b6526db5bc83e275260ae60525.gif)
{
6
}
7![[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时 [学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
8
public int Age;
9
public int WeightInPounds;
10
}
下面来看一个小例子,首先要添加命名空间
using System.Runtime.Serialization.Formatters.Binary;
下面的代码将对象Person进行序列化并存储到一个文件中
1
Person me = new Person();
2![[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时 [学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
3
me.Age = 34;
4
me.WeightInPounds = 200;
5![[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时 [学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
6
Stream s = File.Open("Me.dat",FileMode.Create);
7![[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时 [学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
8
BinaryFormatter bf = new BinaryFormatter();
9![[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时 [学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
10
bf.Serialize(s,me);
11![[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时 [学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
12
s.Close();
然后再举一个并行化的例子
Stream s = File.Open("Me.dat",FileMode.Open);
![[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时 [学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
BinaryFormatter bf = new BinaryFormatter();
![[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时 [学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
object o = bf.Deserialize(s);
![[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时 [学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
Person p = o as Person;
if(p != null)
Console.WriteLine("DeSerialized Person aged:{0} whight:{1}",p.Age,p.WeightInPounds);
![[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时 [学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
s.Close();
如果需要对部分字段序列化部分不序列化时,我们可以按照如下设置实现
[Serializable]
public class Person
![[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时 [学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
{
public Person()
![[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时 [学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时](https://i-blog.csdnimg.cn/blog_migrate/3112b7b6526db5bc83e275260ae60525.gif)
{
}
![[学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时 [学习笔记]c 串行化与并行化 - 冰雨 - 现 在 进 行 时](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
public int Age;
[NonSerialized]
public int WeightInPounds;
}
原文摘自:http://zouyou1986.blog.163.com/blog/static/17726259200924102943972/
745

被折叠的 条评论
为什么被折叠?



