Я не уверен, каким должен быть тип изолированныйStore, но если это словарь, то isolatedStore.TryGetValue(key, out value)
будет моим предпочтительным способом проверки.
А для присваивания, isolatedStore[key] = value
никогда не должно выдавать исключение, если ключ не равен нулю, что, по-видимому, справедливо, чтобы пузырек до вызывающей стороны. По сути, использование индексатора само по себе является операцией добавления или обновления, хотя он не сообщит вам, было ли ранее значение.
Так что да, точно так же, как int.Parse
против int.TryParse
, предпочтите методы, которые дают вам ответы, с которыми вы можете иметь дело (например, TryGetValue
), а не методы, которые выдают исключения (по крайней мере, в восстанавливаемых ситуациях, подобных этим).
Бен Фойгт говорит о безопасности потоков. Использование TryGetValue и присвоение значения с помощью indexer (isolatedStore[key])
вместо .Add()
устранит любые исключения, но операция все еще не будет атомарной.