public TValue AddOrUpdate(TKey key, Func <TKey, TValue> addValueFactory, Func <TKey, TValue, TValue> updateValueFactory) { return(internalDictionary.InsertOrUpdate(Hash(key), key, () => Make(key, addValueFactory(key)), (e) => Make(key, updateValueFactory(key, e.Value))).Value); }
public TValue AddOrUpdate (TKey key, Func<TKey, TValue> addValueFactory, Func<TKey, TValue, TValue> updateValueFactory) { CheckKey (key); if (addValueFactory == null) throw new ArgumentNullException ("addValueFactory"); if (updateValueFactory == null) throw new ArgumentNullException ("updateValueFactory"); return internalDictionary.InsertOrUpdate (Hash (key), key, () => Make (key, addValueFactory (key)), (e) => Make (key, updateValueFactory (key, e.Value))).Value; }