创建没有复制和/或分配的子阵列
本文关键字:分配 阵列 复制 创建 | 更新日期: 2023-09-27 17:59:10
我是C#的新手,想知道如何做以下事情:
我创建了一个数组,其大小为我需要存储的最大元素数:
int[] myArray = new int[64000];
我正在将此数组传递给第三方API。在这个API中,它们使用.Length
属性来确定元素的数量。我不希望发生这种情况,因为数组长度是最大计数,而不是"活动计数"(即使用中的元素数量)。
考虑到这一点,有没有办法创建另一个数组,其大小等于活动计数?而且,这可以在没有拷贝和/或分配的情况下完成吗?我已经分配了内存——我只想指示感兴趣的子区域,同时很好地使用第三方API。
如果第三方API接受int[]
,则传入数据的唯一方法是复制。
API可以很容易地在不需要的地方设计(即:传递元素的数量,或使用ArraySegment<T>
等),但如果API不支持它,则需要一个副本。
请注意,您可以使用Array.Copy来批量复制项目,而不是在循环中进行复制。