好贷网好贷款

C#基础知识回顾--串行化与反串行化

发布时间:2016-12-3 12:46:05 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"C#基础知识回顾--串行化与反串行化",主要涉及到C#基础知识回顾--串行化与反串行化方面的内容,对于C#基础知识回顾--串行化与反串行化感兴趣的同学可以参考一下。

        串行化是指存储和获取磁盘文件、内存或其他地方中的对象。在串行化时,所有的实例数据都保存到存储介质上, 在取消串行化时,对象会被还原,且不能与其原实例区别开来。只需给类添加Serializable属性,就可以实现串行化实 的成员。反串行化是串行化的逆过程,数据从存储介质中读取出来,并赋给类的实例变量。串行化能保存现有对象的所有状态, 我想我们以前见过的一些游戏的角色账户中的dat文件应该就是被串行化的结果。我尝试了打开一个dat文件,果真得到了 我需要的信息,一些角色的等级之类的信息果然在里面。    串行化对象,需要先将对象加上[Serializable],如: [Serializable] public class User { public string Name { get; set; } public string Password { get; set; } }       串行化其实很简单,下面看个例子: 首先需要添加序列化命名空间: using System.Runtime.Serialization.Formatters.Binary; 我们将一个用户对象进行序列化并存储到一个文件中: private static void AddUser() { User user = new User(); user.Name = "admin"; user.Password = "123"; using (Stream input = File.OpenWrite("user.dat")) { BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(input, user); } } 取出这个对象同样很简单,看代码: public static bool VaildateUser(string pwd) { using (Stream outPut = File.OpenRead("user.dat")) { BinaryFormatter bf = new BinaryFormatter(); User user = bf.Deserialize(outPut) as User; if (user != null) { return pwd == user.Password; } } return false; } 呵呵,是不是很简单。在进行串行化的时候,对象被转换成二进制保存到文件中。   如果需要对部分字段序列化部分不序列化时,我们可以按照如下设置实现 [Serializable] public class User { public string Name { get; set; } public string Password { get; set; } [NonSerialized] public string Greate{ get; set; } }  

上一篇:动态链接库与静态链接库的区别
下一篇:Extjs 项目中常用的小技巧,也许你用得着(4)---Extjs 中的cookie设置

相关文章

相关评论