gpt4 book ai didi

c# - BinaryFormatter 中的引用完整性

转载 作者:太空狗 更新时间:2023-10-29 19:26:36 24 4
gpt4 key购买 nike

Protobuf-net 中 AsReference 选项的存在以及 BinaryFormatter 是“图形序列化器”的说法让我假设 BinaryFormatter 不维护引用并且它会复制每个对象。

但我做了一些测试,发现即使是递归引用,单个 BinaryFormatter Serialize() 或 Deserialize() 调用中的所有引用也会保留。

我可以确认 BinaryFormatter 确实维护引用吗?这与 Protobuf-net 有何不同?好像我对“图形序列化”的理解不正确?我还应该注意什么?

提前致谢。

最佳答案

tl;博士;版本 - BinaryFormatter 始终保留引用。

事实上,BinaryFormatter 是一个“图形序列化程序”,与“它保留引用”同义,因为这是需要 以准确地再现图形。替代方案是序列化器(大多数XmlSerializerDataContractSerializer(没有启用特定选项),JavascriptSerializer 和没有 AsReference 的 protobuf-net 都是基于树的)。树序列化程序通常不会保留引用(除非它们使用一些技巧,即如果启用全图模式,DataContractSerializer 会做什么,或者 protobuf-net 使用 AsReference )。树序列化程序(未启用伏都教)往往会与递归模型一起爆炸,这使得它们很容易被发现。

关于c# - BinaryFormatter 中的引用完整性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7479114/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com