创建没有复制和/或分配的子阵列

本文关键字:分配 阵列 复制 创建 | 更新日期: 2023-09-27 17:59:10

我是C#的新手,想知道如何做以下事情:

我创建了一个数组,其大小为我需要存储的最大元素数:

int[] myArray = new int[64000];

我正在将此数组传递给第三方API。在这个API中,它们使用.Length属性来确定元素的数量。我不希望发生这种情况,因为数组长度是最大计数,而不是"活动计数"(即使用中的元素数量)。

考虑到这一点,有没有办法创建另一个数组,其大小等于活动计数?而且,这可以在没有拷贝和/或分配的情况下完成吗?我已经分配了内存——我只想指示感兴趣的子区域,同时很好地使用第三方API。

创建没有复制和/或分配的子阵列

如果第三方API接受int[],则传入数据的唯一方法是复制。

API可以很容易地在不需要的地方设计(即:传递元素的数量,或使用ArraySegment<T>等),但如果API不支持它,则需要一个副本。

请注意,您可以使用Array.Copy来批量复制项目,而不是在循环中进行复制。