Mam prosty scenariusz, w którym chcę zaktualizować wartość istniejącego elementu. Tylko metoda AddOrUpdate oferuje delegata, w którym mogę zaktualizować starą wartość. Jednak nie chcę dodawać niczego, jeśli klucz nie istnieje. Również metoda TryUpdate nie ma przeciążenia, że mogę uzyskać starą wartość. Czy istnieje sposób, aby to zrobić przy użyciu bieżącego interfejsu API?Czy istnieje sposób użycia ConcurrentDictionary.TryUpdate z wyrażeniem lambda?
Oto podpis szukam:
bool TryUpdate(TKey key, Func<TValue,TValue> updateValueFactory)
Nie ma metody, która to robi. Czy rozważałeś dodanie wartości specjalnej, jeśli klucz nie istnieje i traktujesz tę wartość tak samo, jak gdyby wpis nie był obecny? – dtb
@dtb Odkąd piszę o tej klasie, nie można wymyślić nieprawidłowego klucza. Mogę o to konkretnie poprosić, ale to nie byłby mój pierwszy wybór. –
Właściwie, jeśli piszemy wrappera, faktycznie można przechowywać elementy, które zawijają wartość, dzięki czemu można utworzyć własną specjalną wartość nagrobka. Dodałoby to jednak koszt każdego użycia. –