【发布时间】:2021-11-30 01:35:19
【问题描述】:
我有一个字节数组,例如:
{0,1,2,3,4,5,6,7,8,9}
我想将较小的数组插入:
我要在原数组第三个索引之后插入的数组:
{11,11,11}
所以最终的数组应该是这样的:
{0,1,2,3,11,11,11,4,5,6,7,8,9}
如您所见,我需要保留数组的原始值,将它们向左移动,然后用新数组代替它。 我正在调查 Array.Copy() 但它覆盖了原始值,而不是移动它们
【问题讨论】:
-
你需要一个新的数组来容纳组合的数组,所以分配它并使用三次
Array.Copy()来复制 array1 的第一部分,然后是 array2,然后是 array1 的第二部分。 -
数组是最好的数据结构吗?即使它在幕后使用数组,当然只是能够在
List<byte>上写InsertRange(3, otherData)会让您专注于完成工作,而不是大惊小怪地复制数组值等. -
你并不真正想要一个数组,而是一个 List
。 -
@Damien_The_Unbeliever 我需要将带有文件流的结果数据写入文件,这就是它的字节数组的原因
-
如果您使用.net 5.0 或更高版本,您可以将
List<byte>写入FileStream,而无需使用fileStream.Write(CollectionsMarshal.AsSpan(listOfBytes));转换为数组(这不会复制数据所以它非常有效,但是当fileStream.Write()正在做它的事情时,你不能在另一个线程中更改listOfBytes。)