C# の仕様から、参照の読み取り/書き込みはアトミックであることがわかっています。オブジェクトのメンバーにアクセスするステートメントでは、参照もアトミックにアクセスされますか? コンパイラがコードを生成する際に原子性を提供しなければならない一種の暗黙的な参照読み取りでもあるため、私はそう思います。
同じステートメントで、オブジェクトにアクセスしてそのメンバーにアクセスすると、オブジェクト参照が保持されるため、別のスレッドによって新しいインスタンスが作成されたときにガベージ コレクションが行われませんか?
では、チェーン内のメンバーにアクセスする場合、一番左のオブジェクト参照も保持されるので、他のスレッドによってガベージ コレクションが行われることはありませんか?
次のコードを検討してください。
static SomeClass sharedVar;
void someMethod()
{
SomeClass someLocalVar = sharedVar.memberX.memberY.a;
operations on someLocalVar...
}
MSDN ライブラリ、C# 仕様など、または Microsoft の人々から、この件名に関する公式の説明を探して、何かを壊していないこと、およびすべてが正常であることを確認しています。