【问题标题】:Why we need not to declare a serialVersionUID(or equivalent) in C#?为什么我们不需要在 C# 中声明一个 serialVersionUID(或等价物)?
【发布时间】:2015-07-22 23:58:34
【问题描述】:

在 Java 中,强烈建议所有可序列化的类都显式声明 serialVersionUID,因为默认的 serialVersionUID 计算对类细节高度敏感且编译器实现不可靠。

C# 中的序列化有什么特别之处?

【问题讨论】:

  • 请注意,在 Java 中,它是故意不可靠的。
  • @Juan 这仅在 Java 上下文中相关
  • 对不起,今天早上还困!
  • 建议您阅读此问题/答案:stackoverflow.com/questions/15631341/…
  • @immibis 故意让它变得不可靠可以达到什么目的?

标签: java c# serialization


【解决方案1】:

在 .Net 中的序列化不像在 Java 中那么胡思乱想。

默认情况下,它支持新字段,只是默认它们,它只是忽略任何它不期望的数据。

您仍然可以通过在您的类中实现 ISerializable 接口并将您自己的自定义 VersionId 添加到您的类并在那里检查它来实现相同类型的版本控制。

你可以阅读更多关于这个here

【讨论】:

  • Java 序列化还支持添加和删除字段。 GetField.get 方法甚至包括一个选项,如果缺少自定义反序列化,则使用特定值。不同之处在于,如果您希望在更改类后保持兼容性,Java 要求您显式声明版本。
猜你喜欢
  • 1970-01-01
  • 2018-03-17
  • 1970-01-01
  • 2011-09-20
  • 1970-01-01
  • 2020-07-29
  • 2014-07-20
  • 2023-03-07
  • 1970-01-01
相关资源
最近更新 更多