A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wenbolwm 黑马帝   /  2012-3-18 15:16  /  1869 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在.net中序列化和反序列化是怎么回事,有什么用?谢谢

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 徐振升 于 2012-3-19 10:44 编辑

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

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

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

希望对你有帮助。

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

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

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马