黑马程序员技术交流社区

标题: c#中的序列化和反序列化 [打印本页]

作者: wenbolwm    时间: 2012-3-18 15:16
标题: c#中的序列化和反序列化
在.net中序列化和反序列化是怎么回事,有什么用?谢谢
作者: 徐振升    时间: 2012-3-19 10:43
本帖最后由 徐振升 于 2012-3-19 10:44 编辑

上面讲的很详细了 我就说个现实中的列子吧。

比如玩单机游戏,单机游戏可不会给你一个数据库去存储你的游戏进度。
通常你会发现在你安装的游戏目录下有个save文件夹,里面有很多文件是你保存的游戏进度。这些文件的后缀名会很奇怪,可能根本就不存在这种格式。

应为这是在序列化的时候(把对象转换成特定的字节序列的过程),这个保存文件的后缀名你可以自己随便起。
而反序列化需要你知道你转换的时候对象的类型,否则无法发序列化。比如你存进去的是一个人物的对象。那么反序列化你需要知道这是一个人物的对象,而不能在不知道的情况下反序列化。

希望对你有帮助。
作者: oscar    时间: 2012-3-19 18:52
序列化是将对象的状态存储到特定存储介质中的过程,也可以说是将对象状态转换为可保持或传输的格式的过程。被持久化的数据包括所有以后需要用来重建(即反序列化)对象状态所必需的信息。
反序列化则是从特定存储介质中将数据重新构建为对象的过程。通过反序列化,可以读取存储在文件上的对象信息,然后重新构建为对象。这样就不需要再将文本文件的信息一 一读取,分析在组织为对象了。
为了让对象支持序列化,需要为类加上[Serializable]特性。如果类的某些成员不能或不需要序列化,则在这些域前面加上[NonSerializable]特性。
注:[Serializable]特性不能被继承,如果从标记为[Serializable]的类派生子类,则子类也必须被标记为[Serializable],否则将不能够被持久化。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2