我一直在努力理解我必须了解的测试方法发生了什么,我很难弄清楚我得到结果的原因,任何关于“f “方法有效,非常感谢
class Program {
static void Main(string[] args)
{
A b = new A(); b.y = b.x;
b.f(b.y); b.g();
Console.WriteLine(b.x[0] + " " + b.x[1]); // Prints 1 7
Console.WriteLine(b.y[0] + " " + (b.x[1] + b.y[1])); // 1 14
}
}
public class A {
public int[] x = {1, 2};
public int[] y;
public void f(int[] z)
{
z[1] += 5;
}
public void g()
{
A a = new A ();
a.x[0]++;
a.x[1]--;
}
}
让我解释一下我所理解的,通过被创建为一个数组并获取 bx 中的值,现在,当我们调用 bf 时,我们通过该方法传递 [1, 2],现在,这就是我卡住的地方, z 似乎是 by 数组,因此它具有 [1, 2] 作为值,当该方法将 5 添加到位置 1(即 2)的元素时,我得到 [1, 7] 作为结果,当方法结束,我的程序以某种方式返回到主程序,并且 bx 两者现在都是 [1, 7],这是怎么发生的?,我认为该方法只是在修改 by,因为这是通过的方法。此外,g 函数不会添加任何内容,因为“a”值是在方法结束时“死亡”的局部变量,对吧?我希望有人能帮助我,我必须通过这个测试!谢谢 ;]