В традиционных коллекциях .net значение из ключевого поиска в словаре (или поп/просмотр из очереди) возвращает указатель на объект в куче. Когда вы изменяете этот указатель, значение в куче изменяется. В результате состояние мутируется в словаре.
Надежные коллекции - это фасад вокруг гораздо более сложного взаимодействия. Хотя верно, что коллекция находится в памяти *, надёжный менеджер штата также отвечает за репликацию любых изменений во вторичных репликах. Механизм, с помощью которого это происходит, вызывает CommitAsync в ITransaction.
Если вам нужно было только изменить представление объекта в памяти, изменение никогда не будет реплицировано на вторичные разделы, и это приведет к неопределенному/непредвиденному поведению. (скажем, когда активный первичный переключается на вторичный). Если вы вызываете CommitAsync (даже если вы выполняете Get -> Modify -> Set), транзакция может не выполнить фиксацию, а текущее в представлении памяти будет отличаться от текущего в памяти разделов и представления на диске основного раздела. Это снова приведет к неопределенному/неожиданному поведению.
* В большинстве случаев, если размер коллекции больше, чем доступная память. В этом случае значения выгружаются с диска, и в памяти хранятся только ключи и недавно используемые значения. В будущем, я слышал, что разговоры вокруг пейджинга продолжаются в хранилище памяти, когда давление диска увеличивается.