-9

a = a +115myと書くMessageBoxと 215 が返されますが、このように書くa=115;と 115 が表示されます。

何故ですか?

private void button1_Click(object sender, EventArgs e)
{
    int c=100;
    MessageBox.Show(Count(c).ToString());
}

public int Count(int a)
{
    a=115;
    return a;
}
4

8 に答える 8

4

質問は解読するのが非常に難しいです。Count以下に示すように、という名前の関数の 2 つの異なるバージョンを試したと思います。

このバージョンの関数を検討してください。

public int Count1(int a)
{
    a = 115;
    return a;
}

パラメータとして渡した値に関係なく、115 が返されます。パラメータを代入 で上書きしていますa = 115。したがって、このパラメーターはまったく無意味です。

そして今、他のバージョン:

public int Count2(int a)
{
    a = a + 115;
    return a;
}

このバージョンの関数は、変数でパラメーターを受け取りますa。次に、その値に 115 を加算し、結果を返します。したがって、次のように呼び出すと:

Count2(100)

返される値は 215 です。

関数を次のように書くと理解しやすいかもしれません。

public int Count1(int a)
{
    return 115; //very clearly the input parameter is ignored
}

public int Count2(int a)
{
    return a + 115; //but in this version, the input parameter is used
}

これらのバージョンはあなたのバージョンとまったく同じですが、理解しやすいと思います。

于 2012-12-03T16:28:48.733 に答える
1

a = 115 は整数変数を 115 に設定し、a += 115 または a = a + 115 は a の値に 115 を追加し、その値の結果を返します。

于 2012-12-03T16:28:18.267 に答える
1

「a」と「c」が別の値だと思うから混乱するのですか?

メソッド Count(int a) は、値の名前が元々 "c" であったことを気にしません。そのメソッド内に入ると、単に「a」と呼ばれます。

public int Count(int a)
{
    a = a+115;
    return a;
}

ステップバイステップ:

1) 値 100 を Count() メソッドに渡します。(a = 100)

2) Count() は a の値を 100 + 115 に設定します。 (a = 215)

3) 呼び出し元のメソッドに 215 が返されます。

4) 呼び出しメソッドは 215 を文字列として表示します。

それは役に立ちますか?

于 2012-12-03T16:42:51.617 に答える
1

何が起こっているのか、そしてあなたが本当に求めていることを示すために、コードの 3 つのバージョンを次に示します。

オリジナル:

private void button1_Click(object sender, EventArgs e)
{
    // Set c to 100
    int c=100;

    // Print the result of Count, which (see below) is ALWAYS 115.
    MessageBox.Show(Count(c).ToString());
}

public int Count(int a)
{
    // Set a to 115 (there is no add here, I think this is a typo)
    a=115;
    // Return a, which is ALWAYS 115.
    return a;
}

私があなたが意味したと思うこと:

private void button1_Click(object sender, EventArgs e)
{
    // Set c to 100
    int c=100;

    // Print the result of Count, which will be 215.
    MessageBox.Show(Count(c).ToString());
}

public int Count(int a)
{
    // Add 115 to a.
    a+=115;

    // Return the result (if a == 100, this will return 215)
    return a;
}

あなたが得ていると思うもの:

private void button1_Click(object sender, EventArgs e)
{
    // Set c to 100
    int c=100;

    // Call the count function, passing in a reference for c.
    Count(ref c);

    // Print the value of c. This will be 215 because the Count function set c to a new value.
    MessageBox.Show(c.ToString());
}

public void Count(ref int a)
{
    a+=115;
}

この最後のケースでは、関数を に変更しましたpublic void Count(ref int a)ref修飾子により、関数は別の変数への参照を使用して新しい値を割り当てることができます。通常、パラメーターは「値渡し」であり、変数の値のコピーが渡されます。

この場合、2 番目のバージョンが優先されることに注意してください。参照パラメータは、単純な戻り値の代わりとしてではなく、本当に必要な場合にのみ使用してください。

于 2012-12-03T16:43:49.883 に答える
1

a = 100 + 115 の100ステートメントを持つ関数に渡すと、215 が返されます。a = a + 115

public int Count(int a)
{
    a = a + 115; // a = 100 + 115 
    return a;
}
于 2012-12-03T16:29:00.450 に答える
1

を実行すると、 に割り当てているため表示a=115されます。を使用すると、右の値を左の値に割り当てます。あなたがするとき、あなたがしているのとほとんど同じです。に割り当てています。 115115a=int c=100c100

を渡すとccis100で、式が isa=a+115の場合、abe になります215。あなたがやっているような値を渡すと、 にaなります100。したがって、 の式を実行すると、 とa=a+115言ってa=100+115、 が得られます215

于 2012-12-03T16:29:29.250 に答える
0

あなたのCount()メソッドは、渡された値を捨てて を返すだけ115です。に置き換えa=115a=a+115渡すと100、215 が返されます。これはすべて予想どおりです。

a=a+115は、「 の値にa115 を加え、合計を に代入する」という意味aです。

これはすべて期待どおりに機能しています。

于 2012-12-03T16:30:39.537 に答える
-1

a変数がメッセージ ボックスにどのように変換されるのか疑問に思っているようです。これは、変数acount()関数内にあるためです。その値を変更すると、count 関数の結果が変わります。メッセージ ボックスは から値を取得するのでcount、これで完了です。

于 2012-12-03T16:29:45.503 に答える