我是C#的新手,我想知道如何执行以下操作:
我创建了一个数组,其大小是我需要存储的最大元素数:
int[] myArray = new int[64000];
我将此数组传递给第三方API。在此API中,他们使用.Length
属性来确定元素的数量。我不希望这种情况发生,因为数组长度是最大计数,而不是"活动计数" (即使用中的元素数量)。
考虑到这一点,有没有办法创建另一个数组,其大小等于活动计数?而且,这可以在没有复制和/或分配的情况下完成吗?我已经拥有了已分配的内存 - 我想要做的就是在与第三方API很好地协作的同时指出感兴趣的子区域。
答案 0 :(得分:5)
如果第三方API接受int[]
,则传递数据的唯一方法是复制。
可以在不需要的地方轻松设计API(即:传递元素数量,或使用ArraySegment<T>
等),但如果API不支持它,将需要复制。
请注意,您可以使用Array.Copy批量复制项目,而不是在循环中进行复制。