在 Java 中,HashMap 有一个方法computeIfAbsent,如果没有找到该值,则使用给定的函数计算该值。但是,我在 C#'s Dictionary 中没有找到等效的东西。
(TryAdd类似,但如果字典中存在该值,我想避免重新计算该值。)
我可以手动实现它
public static V ComputeIfAbsent<K, V>(this Dictionary<K, V> dict, K key, Func<K, V> generator) {
bool exists = dict.TryGetValue(key, out var value);
if (exists) {
return value;
}
var generated = generator(key);
dict.Add(key, generated);
return generated;
}
Run Code Online (Sandbox Code Playgroud)
但我不想向核心库写入重复的内容。