これは私を困惑させました。次のコンストラクタは新しいSector
インスタンスを作成しますが、array1
またはarray2
の値を変更すると、両方の値が変更されます。奇妙なC#の動作。 1つの値を設定すると2つに影響があります
public Sector (Vector3[] vertices)
{
Vector3[] array1 = vertices;
Vector3[] array2 = vertices;
array1 [0].X = 0;
array2 [0].X = 1;
Console.WriteLine (array1 [0].X);
Console.WriteLine (array2 [0].X);
}
出力は、これはC#言語の意図的な部分の両方の配列
1
1
ための1ですか?代替手段は何ですか?
をあなただけ* 1 *の配列を持っています。複数の変数名で参照していますが、メモリには* 1の配列しかありません。 – David
配列1と配列2が同じ配列を指しています。頂点は – Eser
です。 'array1'と' array2'は同じオブジェクト( 'vertices')を指しています。したがって、最後の代入 'array2 [0] .X = 1;'は 'vertices'配列を直接変更し、前の行の変更を上書きします。 –