什么是可序列化的对象?

Fra*_*ank 19 c# serializable

什么是C#中的可序列化对象?我想serializable一词比"序列化对象"更让我失望.

Eri*_*ith 28

通常,对象是随机访问,也就是说,您可以指定对象的任何部分(属性或字段)并直接访问该部分.如果你使用RAM存储一个对象,这一切都很好,因为RAM是R andom A cess M emory,因此适合这项工作.

当您需要将对象存储在传统上不是随机访问的介质(例如磁盘)上,或者需要通过媒体(例如网络)传输对象时,则需要将对象转换为以下形式:适合相关媒介.此转换过程称为序列化,因为结构化对象被展平或序列化,使其更易于长期存储或通过网络传输.

为什么不将包含RAM中对象的位复制到磁盘,或者通过网络将其作为不透明blob发送?......你可能会问.一些问题:

  1. 对象存储在内存中的格式通常是专有的,因此不适合公共使用 - 它存储在内存中的方式针对内存使用进行了优化.
  2. 当对象引用其他对象时,这些引用仅在正在运行的应用程序的上下文中具有意义.除非在序列化过程中,对象图被相应地走动和序列化,否则不可能有意义地反序列化对象.可能需要将这些引用转换为在应用程序实例的上下文之外具有含义的表单.
  3. 异构系统之间可能存在互操作要求,在这种情况下,需要表示对象的标准方法(通常为此选择某种形式的XML).


Cin*_*er6 6

可以转换为位并存储在介质(例如硬盘驱动器)上的对象. http://en.wikipedia.org/wiki/Serialization

  • 作为_not_ serialisable的示例,考虑在不具有相同环境的机器上重建(如果不是不可能的话)非常困难的事情.例如,ResultSet不可序列化,因为它们可以保持连接回数据库. (2认同)