Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 插入缓冲区的有效方法_C#_.net_Stream_Buffer - Fatal编程技术网

C# 插入缓冲区的有效方法

C# 插入缓冲区的有效方法,c#,.net,stream,buffer,C#,.net,Stream,Buffer,假设我将一个流读入一个缓冲区,我想在这个缓冲区中进行多次插入。是否有一些有效的帮助对象,我可以调用,以帮助这一点。比如说,如果我想在位置100处插入10个字节的长度,然后在位置500处插入20个字节的长度(插入前10个字节后现在是510)。我所追求的是在多次插入时跟踪实际插入的位置(否则我必须根据我已经插入的内容移动所有地址) 滚动我自己的程序会很简单,但我想知道我是否在这里重新发明轮子,这已经包含在一些.NET构造中了?滚动你自己的程序(或搜索现有的程序库)-没有什么可以帮助跟踪插入以最小化周

假设我将一个流读入一个缓冲区,我想在这个缓冲区中进行多次插入。是否有一些有效的帮助对象,我可以调用,以帮助这一点。比如说,如果我想在位置100处插入10个字节的长度,然后在位置500处插入20个字节的长度(插入前10个字节后现在是510)。我所追求的是在多次插入时跟踪实际插入的位置(否则我必须根据我已经插入的内容移动所有地址)

滚动我自己的程序会很简单,但我想知道我是否在这里重新发明轮子,这已经包含在一些.NET构造中了?

滚动你自己的程序(或搜索现有的程序库)-没有什么可以帮助跟踪插入以最小化周围的复制字节

使用字节数组和
Buffer.BlockCopy
为每次插入配置简单的解决方案,以确保该方法确实不可接受。(签出以选择您喜欢的复制方法)


一个优化代码的选项是,不复制保持范围排序列表(如果范围相交,则会变得棘手…)并合并一次结果

插入通常由
List
和类似的结构来处理,您尝试过其中一种吗?您好,您的最后一段,我想您正在解释我在第一段最后一句中的意思。Niave的方法是为每个新插入继续进行大复制,而不是批量处理所有插入并按顺序进行(排序)。我不需要担心相交的范围,看起来我将不得不自己滚动,这应该不难,但我想确定已经没有什么了