序列化,C#基础之序列化(2)

好长时间没写博客了,最近一个月一直在做实施没有时间写博客 .... 今天就来接着上次讲的再来说说。 上次咱们讲的序列化是将一个对象序列化为一个XML 文件。今天咱们就来讲讲另外一种,就是将一个对象序列化成一个二进制文件。多的就不说了直接看代码
序列化,C#基础之序列化(2)序列化,C#基础之序列化(2) [Serializable] class Person { private string name; private string age; private string sex; public string Name { set { name = value; } get { return name; } } public string Age { get { return age; } set { age = value; } } public string Sex { set { sex = value; } get { return sex; } } }

这是一个person的类,这个类有3个属性及年龄,姓名,性别。 咱们给这个类添加了一个特性[Serializable] 这个标记 代表这个类可以被序列化,那么要是如果我们不想序列化其中某个属性该怎么办呢? 很简单 在那个属性上面加上 [NonSerialized]特性就可以了。 但看这段代码 什么也不能说明咱接着向下看
static void Main(string[] args) { Person p = new Person(); p.Name = "xyl"; p.Sex = "男"; p.Age = "23"; BinaryFormatter Bf = new BinaryFormatter(); using(FileStream fs = new FileStream("Person.dat",FileMode.Create,FileAccess.Write,FileShare.None)) { Bf.Serialize(fs, p); } Console.WriteLine("序列化成功"); using (FileStream fsr = File.OpenRead("Person.dat")) { Person p1=(Person) Bf.Deserialize(fsr); Console.WriteLine("name={0},sex={1};age={2}",p1.Name,p1.Sex,p1.Age); } }

这段代码就是将一个对象序列化为一个二进制文件 然后再进行反序列化的代码。首先我们要知道将对象序列化为一个二进制文件有什么优点。这里我们使用了了BinaryFormatter对象 他不仅仅是将对象中的属性字段数据进行持久化,而且也持久化了每个类型的完整限定名和程序集的完整名称。这些数据在跨越.net应用程序边界传递对象时时很理想的。 那么我们来看看这段代码
首先我们实例化了一个person对象 然后给属性进行了赋值,创建了一个BinaryFormatter对象的实例,然后创建一个流对象,参数依次是 path,创建模式,访问文件的方式,如何进程共享。然后使用Serialize()的方法来持久化对象。这时会在 bin文件夹里面生成Person.dat文件 咱们用VS 打开看
序列化,C#基础之序列化(2)
然后使用Deserialize进行反序列化 运行控制台后结果如下
序列化,C#基础之序列化(2)
这就是一个简单的二进制文件的序列化过程 时间有限今天就说到这里,不过要说到的是 大家在尝试些demo的时候不要忘了引用System.Runtime.Serialization.Formatters.Binary 和 System.IO。 呵呵 就说到这里 如果有讲的不对的地方欢迎大家指正,(*^__^*) 嘻嘻…… 晚安
Tags:  php序列化 反序列化 对象序列化 java序列化 序列化

延伸阅读

最新评论

发表评论