Dictionary<TKey,TValue>的TryAdd()方法未定义报错问题咨询
解决
Dictionary<string, int>不存在TryAdd()方法的问题 问题根源
你遇到的报错核心原因很明确:TryAdd()方法是仅在.NET 5及更高版本(包括.NET Core 3.0+、后续的.NET 6/7/8等)才被引入的Dictionary原生方法,而你当前使用的是更早的.NET Framework版本(比如4.x系列),这些旧版本的Dictionary<TKey,TValue>并没有内置这个方法,所以编译器会提示找不到定义。
解决方案
你有两个可行的解决方向:
1. 升级项目的.NET框架版本
如果项目允许调整框架版本,直接把目标框架升级到.NET 5或更高版本即可。这个方法属于System.Collections.Generic命名空间下Dictionary类的原生方法,只要框架版本达标,引入using System.Collections.Generic;就能直接使用,不需要额外添加任何程序集引用。
2. 手动实现替代逻辑(适配旧框架)
如果暂时无法升级框架,可以自己写一个扩展方法来模拟TryAdd()的功能,效果和原生方法完全一致:
using System; using System.Collections.Generic; public static class DictionaryExtensions { public static bool TryAdd<TKey, TValue>(this Dictionary<TKey, TValue> dictionary, TKey key, TValue value) where TKey : notnull { if (dictionary == null) throw new ArgumentNullException(nameof(dictionary)); if (!dictionary.ContainsKey(key)) { dictionary.Add(key, value); return true; } return false; } }
把这段代码添加到你的项目中,之后就能像调用原生方法一样使用items.TryAdd("test", 1);了。
补充说明
其实旧版.NET Framework的Dictionary也可以直接用ContainsKey()判断后再调用Add(),逻辑和上面的扩展方法完全相同,只是扩展方法能让你保持和原生API一致的调用体验。
内容的提问来源于stack exchange,提问作者Ales100
相关产品推荐
相关产品推荐

