【问题标题】:object[,] to object[] or object[][] to object[]object[,] 到 object[] 或 object[][] 到 object[]
【发布时间】:2014-09-30 11:56:44
【问题描述】:

我尝试以下方法。我从 2 个通道获得了以下二维缓冲区数组中的数据:

object[,] buffer;
buffer = new buffer[2,1000000];

现在我只想将一个通道提取到一维数组中。

object[] bufferdata = buffer(1,???);

是否有人知道一种方法可以在一个新数组中获取这些数据,而无需在循环中复制缓冲区(1,i)的每个值。 我也可以使用这种二维数组 object[][] 缓冲区。也许这最好找到解决方案。

【问题讨论】:

  • object[][] 到 object[] 是直接的(除非你想 object[m][])但是对于 object[,] 你必须复制
  • Thx,但我的问题还包括,也许最好使用一种 object[][] 数组来转换为 object[] 数组而不复制。
  • 如果您想在不复制的情况下执行此操作,那么您必须创建一个数组数组。所以它必须是object[][]。如果你对 object[,] 做错了,那么复制是一个硬性要求。
  • 酷,那么如何从 object[][] 复制到 object[] ?

标签: c# arrays


【解决方案1】:

从二维数组object[,] 到一维数组object[] 总是很慢。如果您不使用 object 并且知道存储了哪些类型,这会有所帮助。 Buffer.BlockCopy() 不会帮助您,因为它仅适用于基元数组。

我建议将缓冲区存储在每个通道的锯齿状数组object[][] 中,然后检索很简单object[] data = buffer[i]

或者创建一个大小为2*1000000 的长一维数组,并按通道对数据进行分层。然后,您可以使用Array.Copy() 或Buffer.BlockCopy(),如果您知道将第一个1000000 元素移出或最后一个1000000 元素移出的类型。

【讨论】:

    猜你喜欢
    • 2014-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    相关资源
    最近更新 更多