小编典典

什么是[可序列化],何时应使用?

c#

我发现某些类使用该[Serializable]属性。

  • 它是什么?
  • 我什么时候应该使用它?
  • 我会得到什么好处?

阅读 448

收藏
2020-05-19

共1个答案

小编典典

它是什么?

在.Net Framework应用程序中创建对象时,无需考虑数据如何存储在内存中。因为.Net
Framework会为您解决这一问题。但是,如果要将对象的内容存储到文件,将对象发送到另一个进程或通过网络传输它,则必须考虑对象的表示方式,因为您需要转换为其他格式。这种转换称为SERIALIZATION。

用于序列化

序列化允许开发人员保存对象的状态并根据需要重新创建它,从而提供对象的存储以及数据交换。通过序列化,开发人员可以执行一些操作,例如通过Web服务将对象发送到远程应用程序,将对象从一个域传递到另一个域,将对象作为XML字符串通过防火墙传递,或维护安全性或特定于用户的行为。跨应用程序的信息。

应用于SerializableAttribute一种类型,以指示可以序列化此类型的实例。应用SerializableAttribute即使类还实现了ISerializable控制序列化过程的界面。

SerializableAttribute默认情况下,将序列化由标记的类型中的所有公共和私有字段,除非该类型实现ISerializable接口以覆盖序列化过程。默认的序列化过程不包括标有的字段NonSerializedAttribute。如果可序列化类型的字段包含特定于特定环境的指针,句柄或某些其他数据结构,并且无法在其他环境中进行有意义的重构,则您可能希望将其应用于NonSerializedAttribute该字段。

有关更多详细信息,请参见MSDN

编辑1

任何不将某些内容标记为可序列化的原因

传输或保存数据时,只需要发送或保存所需的数据。因此,将减少传输延迟和存储问题。因此,您可以在序列化时选择不必要的数据块。

2020-05-19