0

ここで、ローカル変数の意味を理解しました。しかし、私の SecondVar は何をするのでしょうか? method2 は myValue を SecondVar に与えませんか?

これらのコードは、「something」を myVar として method2 の myValue に設定することを意味していたので、ここでの mySecondVar の機能は何ですか?

private void method1()
{
    // This is a local variable called myVar
    string myVar = "something";

    string mySecondVar = method2(myVar);
}

private string method2(string myValue)
{
    // This method has received myVar from method1 as "myValue"
    return myValue;
}
4

6 に答える 6

1

どちらもローカル変数です。コードによれば、両方とも同じ値になります。mySecondVarの値をmyVar間接的に取得します。

于 2013-06-18T15:29:19.943 に答える
1
string mySecondVar = method2(myVar);

このコード行は、myVar を渡して method2 を呼び出し、メソッド呼び出しの戻り値を mySecondVar に割り当てます。通常、method2 は値を返す前に実際に値を処理します。この例では何もしないので、mySecondVar に「何か」が割り当てられます。

于 2013-06-18T15:29:37.777 に答える
0

どちらも同じスコープで宣言されているため、ローカル変数です。

string myVar = "something";

ここでは、myVar を何らかの値に直接初期化しています。

string mySecondVar = method2(myVar);

ここでは、 によって返される値を代入していmethod2()ますmySecondVar。は何も操作せずmethod2()に の値を返すため、 と同じ値に初期化されます。myVarmySecondVarmyVar

于 2013-06-18T15:30:15.840 に答える
0

method2 が行っている唯一のことは、文字列値「何か」を取り込んで、同じ値「何か」を mysecondvar に返すことだけです。厳密に文字列を取り込んで、同じ文字列を返します。

于 2013-06-18T15:30:16.440 に答える
0

他の人が言ったように、それらは両方ともローカル変数であり、この例はメソッドが値を取得して返す方法を示しています。

ここで最も興味深いのは、C# の文字列はプリミティブではないため、宣言するローカル変数は、オブジェクト データ自体ではなく、実際にはオブジェクトへの参照であるということです。したがって、このコードでは、同じオブジェクトの 2 つの異なるコピーではなく、同じオブジェクトを参照するように 2 つのローカル変数を基本的に設定しています。

ローカル変数は、このメソッドのスタック フレームに割り当てられます (したがって、このメソッドに対して "ローカル" である理由)、オブジェクトは通常、ヒープに割り当てられます。

この例では、文字列はimmutableであるため、これはあまり重要ではありません。したがって、これらの参照のどちらも、他の参照が知らないうちにオブジェクトを編集することはできません。でも、考えるだけでも楽しい!

于 2013-06-18T15:41:57.577 に答える