我发现有些类使用 [Serializable]
属性。
- 这是什么?
- 我应该什么时候使用它?
- 我会得到什么样的好处?
最佳答案
这是什么?
当您在 .Net Framework 应用程序中创建对象时,您无需考虑数据如何存储在内存中。因为 .Net Framework 会为您处理这些事情。然而,如果你想将一个对象的内容存储到一个文件中,将一个对象发送到另一个进程或通过网络传输它,你必须考虑对象是如何表示的,因为你需要转换成不同的格式.这种转换称为序列化。
用于序列化
序列化允许开发人员保存对象的状态并根据需要重新创建它,从而提供对象存储和数据交换。通过序列化,开发人员可以执行诸如通过 Web 服务将对象发送到远程应用程序、将对象从一个域传递到另一个域、将对象作为 XML 字符串传递通过防火墙或维护安全性或特定于用户的操作跨应用程序的信息。
申请SerializableAttribute
到一个类型以指示可以序列化此类型的实例。申请SerializableAttribute
即使该类也实现了 ISerializable
控制序列化过程的接口(interface)。
由 SerializableAttribute
标记的类型中的所有公共(public)和私有(private)字段默认情况下是序列化的,除非类型实现了 ISerializable
接口(interface)来覆盖序列化过程。默认序列化过程不包括标有 NonSerializedAttribute
的字段.如果可序列化类型的字段包含特定于特定环境的指针、句柄或其他一些数据结构,并且无法在不同的环境中进行有意义的重构,那么您可能需要应用 NonSerializedAttribute
到那个领域。
参见 MSDN了解更多详情。
编辑 1
Any reason to not mark something as serializable
传输或保存数据时,您只需要发送或保存所需的数据。因此,传输延迟和存储问题将会减少。因此,您可以在序列化时选择退出不必要的数据 block 。
关于c# - 什么是 [Serializable] 以及我应该何时使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5877808/