c# - 为什么大多数序列化程序使用流而不是字节数组?

标签 c# serialization stream

我目前正在开发套接字服务器,我想知道 为什么序列化程序像

都需要 Stream而不是字节数组?

最佳答案

这意味着您可以流式传输到任意目的地,而不是只是内存。

如果要向文件写入内容,为什么要先在内存中创建一个完整的副本?在某些情况下,这可能会导致您使用很多 额外内存,从而可能导致故障。

如果你想创建一个字节数组,只需使用一个MemoryStream:

var memoryStream = new MemoryStream();
serializer.Write(foo, memoryStream); // Or whatever you're using
var bytes = memoryStream.ToArray();

因此,通过“您使用流”的抽象,您可以轻松地使用内存 - 但如果抽象是“您使用字节数组”,您将被迫使用内存,即使您不这样做'不想。

关于c# - 为什么大多数序列化程序使用流而不是字节数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43000681/

相关文章:

c++ - 将 std::left 作为参数传递

c# - C# 中的流右移运算符等效吗?

delphi - HTTPS 帖子 - 我做错了什么?

c# - 如何更改 Windows 窗体标题栏中的文本?

c# - 为什么 .maxstack 值在 Release模式 dll/exe 中更多?

c# - WiX - 安装先决条件和第 3 方应用程序

c# - 您如何使用自定义真值和假值从 Xml 中反序列化 boolean 值?

java - 不使用默认构造函数反序列化 JSON

c# - 完成特定任务后清除每件事

java - java中BlockingQueue/ArrayBlockingQueue的序列化