【发布时间】:2020-01-13 07:48:26
【问题描述】:
BitConverter.GetBytes(SomeType) 总是返回一个byte[],似乎每次调用它时都会在内存中创建一个新的byte[],并在一段时间后被GC 回收。我需要多次调用它才能将大量数据转换为字节,这会对性能产生影响吗?
是否有像GetBytes(SomeType input, byte[] buffer) 这样的另一种方法可以将数据写入您自己的缓冲区?
用例是我要将一些数据序列化成二进制格式的文件。
【问题讨论】:
-
您将拥有不同类型的 不同 数组(
byte[8]用于long,byte[2]用于char)。如果SomeType是固定的可以得到对应的实现referencesource.microsoft.com/#mscorlib/system/… -
现代应用程序,如果它主要使用原始类型,可以使用System.Buffers.Binary.BinaryPrimitives。不过,您将直接使用
Spans 而不是byte[]s。
标签: c#