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

时间:2014-04-21 19:06:08

标签: c# arrays

我是C#的新手,我想知道如何执行以下操作:

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

int[] myArray = new int[64000];

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

考虑到这一点,有没有办法创建另一个数组,其大小等于活动计数?而且,这可以在没有复制和/或分配的情况下完成吗?我已经拥有了已分配的内存 - 我想要做的就是在与第三方API很好地协作的同时指出感兴趣的子区域。

1 个答案:

答案 0 :(得分:5)

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

可以在不需要的地方轻松设计API(即:传递元素数量,或使用ArraySegment<T>等),但如果API不支持它,将需要复制。

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