如果我有:
var myObjects = new ConcurrentBag<object>();
并尝试通过以下方式删除对象:
foreach (var myObject in myObjects.ToArray())
{
myObjects.TryTake(out myObject);
}
编译器抱怨:“只读局部变量不能用作赋值目标”
但是,如果我在 foreach 中添加本地引用,它会编译:
foreach (var myObject in myObjects.ToArray())
{
var localReference = myObject;
myObjects.TryTake(out localReference);
}
这里到底发生了什么?