3

以下のコードでは、Bar(int y) のメソッド パラメータ y に x または 1 の値が割り当てられますか? 論理的には同等だと思いますが、代入演算を理解したいです。

class Program
{
    static void Main(string[] args)
    {
        var foo = new Foo();
        var x = 0;
        foo.Bar(x = 1);
    }
}

public class Foo
{
    public void Bar(int y)
    {
    }
}
4

5 に答える 5

6

パラメータは割り当ての値を取得します。

次のようなコードを検討してください。

int x = 0;
int y = (x = 1);
x = 42;
foo.Bar(y);

は別xの時間に変更されますが、yまだ含まれています1

于 2010-09-03T15:38:11.940 に答える
4

結果が 1 になるものに割り当てられx=1ます。

于 2010-09-03T15:33:36.873 に答える
3

代入演算子の結果は に渡されますBar。これは「左側に代入された値です」( Eric Lippert のブログより)。

この場合、それがintvalue1です。

于 2010-09-03T15:34:17.400 に答える
1

評価の順序を考慮する必要があります。関数を呼び出す前に、中括弧内の式を評価する必要があります。結果は、関数呼び出しで引数として使用されます。

あなたの場合、これx = 1は式です。最初に代入に対して評価する必要があります(x=1)。次に、結果の値 x を使用して、それを の引数として使用できますbar

と同等です

x = 1
foo.bar(x)

xを呼び出した後のの値を見ると評価されていることがわかりますfoo

于 2010-09-03T15:38:42.667 に答える
0

() 内のすべてが int である限り、y に渡されます。

しかし、質問に直接答えると思います.xは実際に渡されるものであり、1ではなく、xは1に等しく、y = x = 1になります。

于 2010-09-03T15:38:05.890 に答える