Здравствуйте, Аноним, Вы писали:
А>а почему в данному случае очередность операций гарантируется? потому что очередность не гарантируется только над одним объектом?
Если я ничего не проглядел — там написан бред. "memory model not guaranteeing the order of reads and writes" относится к обращениям к переменной из разных потоков, в приведённом коде используется lock да ещё и с даблчеком.
Если добавить код, обращающийся к instance напрямую — тогда ещё будет смысл, возможно.
Вместо этого танца с граблями я бы использовал
public static readonly Foo ImmutableInstance = CreateFoo();
Если создание Foo — дорогая операция, обернул бы в Lazy.