C# Dictionary中与Java Map的computeIfAbsent等效的内置实现是什么?
结论
分.NET版本情况:
- 如果你使用 .NET 6 及以上版本:已经有内置的等效实现,就是
System.Collections.Generic命名空间下的CollectionExtensions.GetOrAdd扩展方法,功能和你要的ComputeIfAbsent完全一致:当Key存在时直接返回已有值,不会执行值生成逻辑;Key不存在时调用传入的生成函数计算值,存入字典后返回结果。
示例用法:var dict = new Dictionary<string, int>(); int result = dict.GetOrAdd("testKey", k => k.Length); - 如果你使用 .NET 5 及更低版本、或者.NET Framework:没有官方内置的等效实现,你自己写的扩展方法就是社区通用的标准实现,完全可以正常使用,不属于和核心类库功能重复的冗余代码。
另外补充:如果是多线程并发场景,线程安全的ConcurrentDictionary<TKey, TValue>从.NET Framework 4.0开始就自带了实例方法GetOrAdd,同样满足不存在时才计算值的需求。
内容的提问来源于stack exchange,提问作者qouteall
相关产品推荐
相关产品推荐

