Из спецификации C # мы знаем, что чтение / запись ссылок являются атомарными. В операторе, который обращается к члену объекта, ссылка также будет доступна атомарно?
Я думаю, да, потому что это также своего рода неявное чтение ссылок, для которого компилятор должен обеспечивать атомарность при генерации кода для него.
В том же операторе доступ к объекту для доступа к его члену приведет к тому, что ссылка на объекты будет храниться, чтобы не было мусора, когда новый экземпляр создается другим потоком?
Итак, если мы получим доступ к членам в цепочке, будет ли сохранена ссылка на самые левые объекты, чтобы она не собиралась мусором другими потоками?
Рассмотрим следующий код;
static SomeClass sharedVar;
void someMethod()
{
SomeClass someLocalVar = sharedVar.memberX.memberY.a;
operations on someLocalVar...
}
Я ищу официальное объяснение по этому вопросу из библиотеки MSDN , C # specs и т. Д. Или сотрудников Microsoft, чтобы убедиться, что я что-то не нарушаю и все в порядке.