我们从C# specification知道引用读/写是原子的。在访问对象成员的语句中,是否也可以原子方式访问引用? 我想是的,因为它也是一种隐式引用读取,编译器必须为其生成代码时提供原子性。
在同一语句中,访问该对象以访问其成员将导致保持对象引用,以便在另一个线程创建新实例时不会对其进行垃圾回收?
因此,如果我们访问链中的成员,是否也会保留最左边的对象引用,以便其他线程不会对其进行垃圾回收?
考虑以下代码;
static SomeClass sharedVar;
void someMethod()
{
SomeClass someLocalVar = sharedVar.memberX.memberY.a;
operations on someLocalVar...
}
我正在寻找有关该主题的官方解释,来自MSDN library,C#规格等,或微软人员,以确保我没有破坏某些东西,一切都很好。
答案 0 :(得分:3)
答案 1 :(得分:0)
你对GC过分担忧。它不会删除任何可能引用&在将来的某个时间访问。只有完全无法访问的对象才会被删除。