首页 > 解决方案 > 将 float[] 数组添加到列表中并清除数组内容而不会丢失列表内容

问题描述

在 C# 中,如何将 float[] 数组 () 的内容复制到 list<float[]> 以便当我清除 float[] 数组时,不会触及 list<float[]> 的内容(即复印件)?附图中提供了一些脚本,其中:

  1. 有 21 个点的值从 0 开始,以 10 结束,增加 0.5。

  2. 该点值的上限,给出了 32 位二进制文​​件的后缀,例如当点值为 0.5 或 1 时,二进制文件“File1.bin”将用于计算,而对于点值 1.5 和 2,二进制文件“ File2.bin”将被使用等等。

  3. 每个文件都是一个 32 位浮点二进制文件,在读取为 32 位二进制值时具有固定数量的元素。

  4. 我想遍历所有点(在 for 循环中),如果我还没有为该点读取二进制文件,请读取文件的内容并将其保存在列表中。由于文件被读入 float[] 数组(脚本中的“oneFile”变量),我的增量列表是 List<float[]>(脚本中的变量“allFiles”)。

  5. 在 for 循环中的每次迭代结束时,我想清除数组“oneFile”的内容,并可能在未来的迭代中读入它。但是,这显然也清除了“allFiles”的内容。我怎样才能避免这种情况?

    在此处输入图像描述

标签: c#

解决方案


而不是用 清除数组Array.Clear,它只是将数组中的一系列元素设置为每个元素类型的默认值,你应该设置oneFile一个数组的新实例,所以它不再引用我们刚刚添加到的同一个实例allFiles.

换句话说,

  • 代替:Array.Clear(oneFile, 0, oneFile.Length);
    • (这只是将所有项目分配给0
  • 和:oneFile = new float[FileSizeBytes / 4];
    • (这会更改对填充了初始化为的项目的新数组的引用0

推荐阅读