【问题标题】:Does "default" serialization in C# serialize static fields?C# 中的“默认”序列化是否序列化静态字段?
【发布时间】:2010-10-11 01:55:44
【问题描述】:

“默认”是指仅在类上使用 [Serializable] 属性。我想说不,静态字段不会被序列化,但我不确定。

【问题讨论】:

  • 我很欣赏这个问题 b/c 你可以很容易地争论(正如回答者所做的那样)静态字段不属于任何实例。但是,如果没有正确理解 .NET 中的类型和类型哲学的实例,也可以反过来说静态字段属于每个实例。主要是 b/c,这正是 - 一种哲学。 .NET 文档没有明确说明有关序列化的这一点,它应该这样做。

标签: c# serialization static


【解决方案1】:

没有;静态字段未序列化。

.Net 序列化序列化实例;静态字段不属于实例。

【讨论】:

  • 谢谢,这正是我想澄清的!
  • 不幸的是,SerializableAttribute documentation 表示“默认情况下,类型中由 SerializableAttribute 标记的所有公共和私有字段都是序列化的”,而没有具体提及静态字段。是否有文档支持静态字段未序列化这一事实?
  • @ALEXintlsos:序列化的整个概念就是序列化一个实例。存储静态字段没有意义。
  • @SLaks 对象在静态时不再是对象吗?我可以看到您的论点,即您不会用它来序列化整个类,但是从某种意义上说,类本身就是一个对象。它有一个状态,在抽象意义上,独立于它的实例,具有静态字段和方法。虽然存在一种定义类的实体,但也有一个表示其状态的对象,并且只有当该对象也可以被序列化时才有意义。如果对此有其他说法,请告诉我,因为我想不出更合适的词了。
  • @Gurgadurgen:不;类不是对象。在 .Net 术语中,“对象”表示类的实例。没错,静态字段确实会占用内存。
猜你喜欢
  • 2015-10-19
  • 2012-06-15
  • 2020-06-07
  • 1970-01-01
  • 2021-10-27
  • 1970-01-01
  • 2021-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多