gpt4 book ai didi

.net - 为什么.net通用字典这么大

转载 作者:行者123 更新时间:2023-12-04 10:58:31 25 4
gpt4 key购买 nike

我正在 VB.net 中序列化一个通用字典,我很惊讶它只有一个项目大约 1.3kb。我做错了什么,还是我应该做其他事情?我有大量字典,将它们全部发送到网络上让我很伤心。我用于序列化的代码是

    Dim dictionary As New Dictionary(Of Integer, Integer)
Dim stream As New MemoryStream
Dim bformatter As New BinaryFormatter()

dictionary.Add(1, 1)

bformatter.Serialize(stream, dictionary)

Dim len As Long = stream.Length

最佳答案

字典的默认序列化必须包括字典类型、使用的比较器以及每个项目的类型(键和值)的类型信息,因为它们通常可能是子类型。必须为每个字典添加此开销。如果将数据打印为字符串,您可以看到有很多完全限定的类型占用了大量字节:

\0\0\0\0????\0\0\0\0\0\0\0\0\0\0?System.Collections.Generic.Dictionary2[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]\0\0\0\aVersion\bComparer\bHashSize\rKeyValuePairs\0\0\b?System.Collections.Generic.GenericEqualityComparer1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]\b?System.Collections.Generic.KeyValuePair2[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]][]\0\0\0\t\0\0\0\0\0\0\t\0\0\0\0\0\0?System.Collections.Generic.GenericEqualityComparer1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]\0\0\0\0\a\0\0\0\0\0\0\0\0\0\0?System.Collections.Generic.KeyValuePair2[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]?????System.Collections.Generic.KeyValuePair2[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]\0\0\0keyvalue\0\0\b\b\0\0\0\0\v



您可能更喜欢使用自定义格式进行序列化,或者使用稍微轻一点的标准格式,例如 JSON .

关于.net - 为什么.net通用字典这么大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2745842/

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