例如:
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()中的变量仍指向对象的原始实例的事实吗?
答案 0 :(得分: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的值(引用),而不是对象本身