私は問題に遭遇しました。私はギザギザの配列(入力)を作成し、次にいくつかの関数を実行し、それから別のギザギザの配列を作成することを期待しています(出力)。しかし、何とか元のアレイもそのプロセスで変更されました。 元の配列の変更を避けるにはどうすればよいですか?c#ギザギザの配列自体が変更されます
double[][] input;
double[][] output;
private void button1_Click(object sender, EventArgs e)
{
input = new double[][]
{
new double[] {0,1,2,3 },
new double[] {9,8 },
new double[] {14,5,0 },
new double[] {2.0,2.3,2.5 }
};
output = function(input);
}
static double[][] function (double[][] ins)
{
double[][] ous = ins;
int leng = ins.GetLength(0);
for (int i = 0; i < leng; i++)
{
int lung = ins[i].GetLength(0);
for (int j = 0; j < lung; j++)
ous[i][j] += 14.4;
}
return ous;
}
をここでの問題 'ダブル[] []のOU =インです;' –
@AlekseyL。両方の配列のサイズが同じであるため、これを追加しました。そのため、再度宣言する必要はありませんでした。しかし、問題はその "入力"配列の変更です。 – Leinad
Alekseyは指摘したように、基本的には値をコピーせずに参照を割り当てています。したがって、メモリには構造体が1つしかなく、ポインタが2つしかありません。だからそれが変わるのです。 – 3615