当我在处理我们的框架的并行性时,我遇到了一个奇怪的情况,我无法想象这是为什么!我简化了情况以简单地描述它。考虑这段代码:
foreach(var person in personList)
{
if (person.Name == "Mehran")
break;
}
它personList在多个线程之间共享。
在什么情况下有可能person是null并且我得到了NullReferenceExceptionfor person.Name?
据我所知,这个人在这里被认为是一个局部变量,如果我们进入foreach块,那么我们已经personList成功地迭代了,所以person在任何情况下或任何并行情况下都不应该为空。
即使personList被另一个线程更改,或者被引用person的被释放,person变量也应该有一个值。因为没有人可以更改person引用的位置。
有什么场景可以解释这种情况吗?