我有一个 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 行做了赋值语句,那么 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 运算符定义新对象时,旧分配不再有效?任何其他(或正确的 - 如果我错了)解释?