我将为我的类实现
我在该类中有一个常量变量,如下所示:
ISerializable
接口。我在该类中有一个常量变量,如下所示:
public const decimal Cost = 3.2M
当我实现GetObjectData
方法时,我可以/应该将此变量序列化吗?
ISerializable
接口。public const decimal Cost = 3.2M
当我实现GetObjectData
方法时,我可以/应该将此变量序列化吗?
它会改变吗?很可能不会(它无法改变)。那么,为什么要对其进行序列化?如果您想重新反序列化它,您甚至无法这样做,但即使您可以,它的值始终是相同的。
为什么要这样做?除非你修改了代码,否则价值永远不会改变。
个人建议只序列化公共属性,因此常量不会被包括。
只有在值在对象实例之间发生变化时,才有序列化和反序列化的用处。因此,对于不会改变的const
值进行序列化是没有意义的。如果您预计该值将来会发生变化,那么它可能不应该是const
。
当你反序列化时,常量已经知道了它的值,因为它永远不会改变,所以将常量序列化没有意义。
来自http://bytes.com/topic/c-sharp/answers/506109-static-fields-serialization:
序列化保存单个对象的状态。静态字段不是对象状态的一部分 - 它们实际上是类型的状态。