我们从C# 规范中知道引用读/写是原子的。在访问对象成员的语句中,引用也会被原子访问吗?我认为是的,因为它也是一种隐式引用读取,编译器在为其生成代码时必须为其提供原子性。
在同一个语句中,访问对象以访问其成员会导致对象引用被持有,因此当另一个线程创建新实例时它不会被垃圾收集?
那么,如果我们访问链中的成员,是否也会保留最左边的对象引用,这样它就不会被其他线程垃圾收集?
考虑以下代码;
static SomeClass sharedVar;
void someMethod()
{
SomeClass someLocalVar = sharedVar.memberX.memberY.a;
operations on someLocalVar...
}
我正在从MSDN 库、C# 规范等或 Microsoft 人员那里寻找有关该主题的官方解释,以确保我没有破坏某些东西并且一切都很好。