Skip to content

Commit

Permalink
Add ConcurrentDictionary GetOrAdd extension methods
Browse files Browse the repository at this point in the history
  • Loading branch information
realLiangshiwei committed Mar 26, 2021
1 parent b31c1ef commit 29ec1aa
Showing 1 changed file with 17 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ public static TValue GetOrDefault<TKey, TValue>(this IReadOnlyDictionary<TKey, T
{
return dictionary.TryGetValue(key, out var obj) ? obj : default;
}

/// <summary>
/// Gets a value from the dictionary with given key. Returns default value if can not find.
/// </summary>
Expand Down Expand Up @@ -100,7 +100,7 @@ public static TValue GetOrAdd<TKey, TValue>(this IDictionary<TKey, TValue> dicti

return dictionary[key] = factory(key);
}

/// <summary>
/// Gets a value from the dictionary with given key. Returns default value if can not find.
/// </summary>
Expand All @@ -114,5 +114,19 @@ public static TValue GetOrAdd<TKey, TValue>(this IDictionary<TKey, TValue> dicti
{
return dictionary.GetOrAdd(key, k => factory());
}

/// <summary>
/// Gets a value from the concurrent dictionary with given key. Returns default value if can not find.
/// </summary>
/// <param name="dictionary">Concurrent dictionary to check and get</param>
/// <param name="key">Key to find the value</param>
/// <param name="factory">A factory method used to create the value if not found in the dictionary</param>
/// <typeparam name="TKey">Type of the key</typeparam>
/// <typeparam name="TValue">Type of the value</typeparam>
/// <returns>Value if found, default if can not found.</returns>
public static TValue GetOrAdd<TKey, TValue>(this ConcurrentDictionary<TKey, TValue> dictionary, TKey key, Func<TValue> factory)
{
return dictionary.GetOrAdd(key, k => factory());
}
}
}
}

0 comments on commit 29ec1aa

Please sign in to comment.