【发布时间】:2019-02-25 02:19:27
【问题描述】:
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...”,值相同...为什么我不能将这些任意类型添加到扩展方法中?
【问题讨论】:
-
您必须将这些类型参数作为泛型参数添加到方法中。他们不会推断。
public static void AddIfNotPresent<TKey, TValue>(this .... -
如果密钥已经存在?您想丢弃传递给方法的值吗?
-
如果你的目标是 .net core 2.0+,有一个 TryAdd 方法到
Dictionary
标签: c# extension-methods