You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:24:00