Istnieją dwa sposoby przypisywania wartości do istniejącego klucza w współbieżnym słowniku w moim bieżącym projekcie.Słownik współbieżności AddOrUpdate vs Index Dodaj
A. concurrentDictionary1[key] = value
;
i
B. concurrentDictionary2.AddOrUpdate(key, value, (k, v) => value);
Jeśli wiem, że istnieje 'klucz', są one funkcjonalnie równoważne?
Czy ochrona zapewniona jest przez współbieżność słownika równoczesnego pomijanego metodą "A"?
Jaka jest różnica? Jakie są powody wyboru jednego z nich?
Przeglądałem dokumentację w msdn i wygląda na to, że inicjują one słownik współbieżny z metodą "A", a nie aktualizują go.
Ten 'concurrentDictionary1 [key] = value' nie wyrzuciłby wyjątku, jeśli klucz nie istnieje, zamiast tego doda go do słownika. – Habib
@Habib: Yup. Odbicie od tego wyjątku:/naprawione. – Will
To jest mój strach, wydaje się, że indeksator jest dobry do zainicjowania, ale może zadziałać nieoczekiwanie tam, gdzie wymagana jest współbieżność. – Bob2Chiv