/// <summary> /// return old value and set to new value. /// </summary> /// <typeparam name="TKey"></typeparam> /// <typeparam name="TValue"></typeparam> /// <param name="dict"></param> /// <param name="key"></param> /// <param name="newValue"></param> /// <param name="defaultReturnValue"></param> /// <returns></returns> public static TValue GetAndSetValue <TKey, TValue>(this IDictionary <TKey, TValue> dict, TKey key, TValue newValue, TValue defaultReturnValue = default(TValue)) { if (dict == null) { throw new ArgumentNullException(nameof(dict)); } try { return(dict.GetValueOrDefault(key, defaultReturnValue)); } finally { dict[key] = newValue; } }
public static TValue GetValueOrDefault <TKey, TValue>(this IDictionary <TKey, TValue> dictionary, TKey key) { return(dictionary.GetValueOrDefault(key, default(TValue))); }