对象序列化存在的原因

对象序列化存在的原因

        ——谈谈类与系统自带的实际已经存在的类型之间的区别

在刚刚接触类的时候,我想大家都有一个跟我一样的想法,就是类(Class)就是我们自定义的一种类型,跟系统其他的类型(像是int、double、float等等)是一样的。只是我们在创建的时候需要定义类(其实声明类就是创建类了),然后就跟其他类型一样了,使用的时候声明一个变量并初始化(也就是给变量负值)就ok了。似乎没什么区别了。

但是在进行对象传输的时候,类的实例化对象的传输方式,是一个字段一个字段地去传输(一个字段就可以看成是一个int或者string之类的),可不能是直接传输一个对象的,这样就不爽了,前面都说了,我类创建了之后,咱们类就应该个其他类型(int...)平起平坐了,为何你int、string能直接传输,我对象怎么就不能直接传输呢?不公平!

不公平。这可能就是先入为主在编译器中的体现,也可能就是亲生的和过继过来的孩子还是有亲疏之分的。所以对象想要像int、string一样直接传输,就需要做出更大的努力。这个努力主要的表现就是实现这个对象的类要能系列化(including这个类的父类以及这个类中所有的类型都可以序列化)。能序列化了之后,我们还得手动敲代码让他执行序列化。

甚至在对象序列化的时候根本不对方法进行序列化,只是对字段进行序列化。 

对象序列化就是把对象编程字节流。(本质)

所以,做个拖油瓶不容易。

使类能够序列化的的方法就是在类的上面加上[Serializable],很简单。然后序列化的步骤有:创建序列化器BinaryFormatter;创建一个流(文件流FileStream、网络流、内存流MemoryStream等等);开始序列化 .Seralize()

反序列化步骤:创建序列化器;创建一个文件流;开始反序列化 .Deseralize()

Just like writing, coding is a work of creating!
原文地址:https://www.cnblogs.com/chenbuer/p/3713264.html