私は、常にサイズ変更されていた多次元配列の束を使用していた大量のコードの大きなリファクタリングを行っています。2D 配列を置き換えるデータ オブジェクトを作成し、これらのリストを渡しています。
ちょっと気になるところも発見。次のようなコードがあるとします。
List<NCPoint> basePoints = new List<NCPoint>();
// ... snip populating basePoints with starting data
List<NCPoint> newPoints = TransformPoints(basePoints, 1, 2, 3);
public List<NCPoint> TransformPoints(List<NCPoint> points, int foo, int bar, int baz){
foreach(NCPoint p in points){
points.X += foo
points.Y += bar
points.Z += baz
}
return points;
}
アイデアは、元のポイントbasePoints
のリスト ( ) と更新されたポイントのリスト( ) を保持することnewPoints
です。ただし、C# は、他のオブジェクトと同様に、参照によってリストを渡します。これは適切に更新されるため、とのbasePoints
両方に同じデータが含まれます。basePoints
newPoints
現時点ではList
、データをいじる前に、渡されたものの完全なコピーを作成することに注意を払っています。関数内のオブジェクトへの変更が関数の外に副作用を及ぼさないことを確認する唯一の賢明な方法はありますか? でオブジェクトを渡すことに似たものはありますconst
か?