3

例えば:

void SomeMethod()
{
    MyObject o = new MyObject();
    // Do stuff with o
    SomeAsyncMethod(o);
    o = new MyObject(); // Will this affect what was passed to SomeAsyncMethod?
}

私が 'o' に対して行ったことは、メイン スレッドと新しいスレッドの両方で明らかに明らかになります。ただし、メイン スレッドで o を新しいインスタンスに等しく設定した場合、SomeAsyncMethod() の変数がまだオブジェクトの元のインスタンスを指しているという事実は変更されません。

4

1 に答える 1

4

いいえ、他のoには影響しません。でも

void SomeMethod()
{
    MyObject o = new MyObject();
    // Do stuff with o
    SomeAsyncMethod(o);
    o.Id = 2222; // will change objects Id property, which will 
                 // be reflected in another thread
}

その理由は、オブジェクト自体ではなく、ローカル変数 o の値 (参照) を変更しているコードにあります。

于 2012-09-07T05:05:48.067 に答える