This old answer建议为此创建扩展方法,但答案已有9年之久,因此C#从那时起可能有所不同,否则我不了解其实现。
我目前正在尝试:
public static void AddIfNotPresent(this IDictionary<TKey, TValue> dict, TKey key, TValue value)
{
if (!dict.ContainsKey(key))
{
dict.Add(value);
}
}
...但是Visual Studio说“找不到类型或名称空间TKey ...”,值相同...为什么我不能将这些任意类型添加到扩展方法中?
答案 0 :(得分:3)
TKey
和TValue
应该是AddIfNotPresent
的类型参数,而AddIfNotPresent
应该在静态类中定义。
void Main()
{
var dictionary = new Dictionary<string, string>();
dictionary.AddIfNotPresent("key", "value");
Console.WriteLine($"{dictionary.First().Key} = {dictionary.First().Value}");
// Output: key = value
}
public static class DictionaryExtensions
{
public static void AddIfNotPresent<TKey, TValue>(this IDictionary<TKey, TValue> dict, TKey key, TValue value)
{
if (!dict.ContainsKey(key))
{
dict.Add(key, value);
}
}
}
答案 1 :(得分:0)
您的AddIfNotPresent
未定义那些通用类型/参数(AddIfNotPresent<TKey, TValue>
)。该答案缺少拼写错误。