Exemplo n.º 1
0
 public TValue AddOrUpdate(TKey key, MyFunc <TKey, TValue> addValueFactory, MyFunc <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);
 }