我可以为C#类中的常量变量进行序列化吗/应该吗?

6
我将为我的类实现ISerializable接口。
我在该类中有一个常量变量,如下所示:
public const decimal Cost = 3.2M

当我实现GetObjectData方法时,我可以/应该将此变量序列化吗?


2
这样做有什么意义吗? - Rotem
13
一个常量变量是一个矛盾之词。 - BoltClock
1
BoltClock 是正确的;那首先不是一个变量。变量之所以称为变量,是因为它们会变化。 - Eric Lippert
有意义 - 谢谢。 - Jason
5个回答

23
当我实现GetObjectData方法时,我可以/应该序列化此变量吗?
绝对不行。
即使您写出它,当您再次读取它时,也不能更改常量的值。
更一般地说,您根本不应序列化静态字段(const意味着static)。任何静态内容都不是实例状态的一部分,而您要序列化的是实例内的数据。

4

它会改变吗?很可能不会(它无法改变)。那么,为什么要对其进行序列化?如果您想重新反序列化它,您甚至无法这样做,但即使您可以,它的值始终是相同的。


3

为什么要这样做?除非你修改了代码,否则价值永远不会改变。

个人建议只序列化公共属性,因此常量不会被包括。


3

只有在值在对象实例之间发生变化时,才有序列化和反序列化的用处。因此,对于不会改变的const值进行序列化是没有意义的。如果您预计该值将来会发生变化,那么它可能不应该是const


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接