c# - 将 float[] 数组添加到列表中并清除数组内容而不会丢失列表内容
问题描述
在 C# 中,如何将 float[] 数组 () 的内容复制到 list<float[]> 以便当我清除 float[] 数组时,不会触及 list<float[]> 的内容(即复印件)?附图中提供了一些脚本,其中:
有 21 个点的值从 0 开始,以 10 结束,增加 0.5。
该点值的上限,给出了 32 位二进制文件的后缀,例如当点值为 0.5 或 1 时,二进制文件“File1.bin”将用于计算,而对于点值 1.5 和 2,二进制文件“ File2.bin”将被使用等等。
每个文件都是一个 32 位浮点二进制文件,在读取为 32 位二进制值时具有固定数量的元素。
我想遍历所有点(在 for 循环中),如果我还没有为该点读取二进制文件,请读取文件的内容并将其保存在列表中。由于文件被读入 float[] 数组(脚本中的“oneFile”变量),我的增量列表是 List<float[]>(脚本中的变量“allFiles”)。
在 for 循环中的每次迭代结束时,我想清除数组“oneFile”的内容,并可能在未来的迭代中读入它。但是,这显然也清除了“allFiles”的内容。我怎样才能避免这种情况?
解决方案
而不是用 清除数组Array.Clear
,它只是将数组中的一系列元素设置为每个元素类型的默认值,你应该设置oneFile
一个数组的新实例,所以它不再引用我们刚刚添加到的同一个实例allFiles
.
换句话说,
- 代替:
Array.Clear(oneFile, 0, oneFile.Length);
- (这只是将所有项目分配给
0
)
- (这只是将所有项目分配给
- 和:
oneFile = new float[FileSizeBytes / 4];
- (这会更改对填充了初始化为的项目的新数组的引用
0
)
- (这会更改对填充了初始化为的项目的新数组的引用
推荐阅读
- microsoft-graph-api - 未找到 Microsoft Graph Planner 资源
- python - 如何在机器人框架中直接运行关键字而不是测试用例
- python - UnicodeEncodeError:'ascii' 编解码器在保存和访问 Jupyter 笔记本时无法编码字符 u'\xd7'
- image - 使用 bwlabel 进行对象分割
- c++ - 在类中初始化 QHash
- python - 在两个不同的文件夹中上传文件并重命名文件?
- html - 列内的文本溢出。如何强制文本始终水平扩展并与列宽内联
- reactjs - 我应该在 React 中使用哪种类型的组件:功能组件或类基础组件?
- javascript - Google maps API Autocomplete:仅输出特定州的城市
- c# - 返回 IAsyncEnumerable
和来自 Asp.Net 核心控制器的 NotFound