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 回答