テストのために理解しなければならない方法で何が起こっているのかを理解するのに苦労しています。得られた結果が得られている理由を理解するのに苦労しています。 「メソッドは機能します。大歓迎です
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] を持ちます。メソッドが位置 1 (2) の要素に 5 を追加すると、その結果として [1, 7] が得られます。メソッドが終了し、私のプログラムはメインに戻ります。どういうわけか、AND bx BOTH are now [1, 7], どうやってそれが起こったのですか?, メソッドは渡されたものなので、によってのみ変更されていると思いました. また、「a」値はメソッドが終了すると「死ぬ」ローカル変数であるため、g 関数は何も追加しません。誰かが私を助けてくれることを願っています、私はこのテストに合格しなければなりません!. ありがとう ;]