gpt4 book ai didi

c# - 如何防止覆盖 for 循环中的数组条目?

转载 作者:行者123 更新时间:2023-11-30 20:28:32 25 4
gpt4 key购买 nike

我的程序得到提示,可以通过使用类结构而不是大量数组和矩阵来使其更易于阅读和维护。 (我没有在这里找到类似的主题,但也许我用错了词汇。但我希望得到帮助)

因为我有一个包含多个条目的数据集,所以我不想拥有所有条目,而是想要一些特定的条目。所以我构建了一个类来更轻松地存储它们:

public class ControlPoint
{
// classify necessary variables
public double _collimatorangle;
public double _gantryangle;
public double[] _jawpositions = new double[4];
public double _monitorunits;
public double[] _mlcs = new double[120];
public double _beamenergy;

// construct the class
public ControlPoint()
{

}
}

调用和填充它们不是问题,但我有超过 100 个 ControlPoint 对象,所以我想使用 for 循环来填充它们并将它们存储在新的数组/列表/ArrayList 中.最后,我想使用数据来计算差异,但是将此类转换为 double 不起作用。所以我写了这个

ControlPoint[] DataPoints = new ControlPoint[160];
ControlPoint CoPos = new ControlPoint();

for (int j = 0; j < 160; j++)
{
// reading data from file
// ...
CoPos._jawpositions[0] = Convert.ToDouble(ReadData_1);
CoPos._jawpositions[1] = Convert.ToDouble(ReadData_2);
CoPos._jawpositions[2] = Convert.ToDouble(ReadData_3);
CoPos._jawpositions[3] = Convert.ToDouble(ReadData_4);

DataPoints[j] = CoPos;
}

所以在循环之后,我希望 DataPoints 数组的每个数组条目都有不同的值。但是在调试中我看到改变数据例如在 j = 10 处,DataPoints 中从 0 到 9 的所有值都更改为实际值。

我不知道我在哪里做错了一步,希望你能帮助我防止这种覆盖。

最佳答案

您只是创建了一个 ControlPoint 实例并一遍又一遍地修改它,然后将它分配给数组的每个元素。将实例化移到循环内:

for (int j = 0; j < 160; j++)
{
ControlPoint CoPos = new ControlPoint();

// reading data from file
// ...
CoPos._jawpositions[0] = Convert.ToDouble(ReadData_1);
CoPos._jawpositions[1] = Convert.ToDouble(ReadData_2);
CoPos._jawpositions[2] = Convert.ToDouble(ReadData_3);
CoPos._jawpositions[3] = Convert.ToDouble(ReadData_4);

DataPoints[j] = CoPos;
}

关于c# - 如何防止覆盖 for 循环中的数组条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47198523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com