Vector クラスがあり、次の単体テストを (nUnit を使用して) テストしていました。
1 Vector test1 = new Vector(new double[] { 6, 3, 4, 5 });
2 Vector test2 = test1;
3 Assert.AreEqual(test1, test2, "Reference test");
4 test2 = new Vector(new double[] { 3, 3, 4, 5 });
5 Assert.AreEqual(test1, test2, "Reference test");
3 行目の最初のテストはパスしますが、5 行目の 2 番目のテストは失敗します。2 行目で代入ステートメントを実行したため、test2 も test1 と同じメモリを指すべきではないでしょうか? 私のVectorはクラスとして定義されているので、参照型です。一方、次のテストはパスします。
1 Vector test1 = new Vector(new double[] { 6, 3, 4, 5 });
2 Vector test2 = test1;
3 Assert.AreEqual(test1, test2, "Reference test");
4 test2[1] = 4;
5 Assert.AreEqual(test1, test2, "Reference test");
new 演算子を使用して新しいオブジェクトを定義すると、古い代入は無効になるということですか? 他の(または正しい - 私が間違っている場合)説明はありますか?