配列や行列の大量の代わりにクラス構造を使って読みやすく、保守しやすくするためのヒントを得ました。 (私はここで似たような話題は見つけられませんでしたが、間違った語彙を使用したかもしれませんが)助けを得たいとは思っていますがforループの配列エントリを無効にする方法は?
私は複数の項目を持つデータセットを持っているので、もの。だから私は簡単にそれらを格納するクラスを構築:
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()
{
}
}
呼び出し、それらを埋めるには問題ありませんが、私はそれらのControlPoint
オブジェクトの100の上に持っているので、私はそれらを記入し、それらを格納するためのループを使用していました新しい配列/リスト/ 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に変更され、実際の値に変更されます。
私は間違ったステップをどこで行ったのかわかりません。あなたがそのオーバーライドを防ぐのを助けてくれることを願っています。