Объекты в C # всегда являются косвенными, что означает, что всякий раз, когда вы обращаетесь к этому объекту, он всегда будет одним и тем же экземпляром объекта.Похоже, что вы, возможно, захотите сделать, это сначала клонировать его, а затем изменить клон.Это также важно для многопоточных сред с общей памятью, таких как у вас выше.
Кроме того, вы можете рассмотреть возможность создания объекта, который вы кэшируете структуру, которая передается по значению вместо ссылки,пока вы сначала распакуете его.Как правило, вы не хотите редактировать объекты, общие для потоков.