Для агрегирования числа вхождений некоторых определенных значений я использую dictionary<valueName:string, counter:int>
, я точно не знаю значений. Так я написал метод SetOrIncrement
, который предположительно используется какСловарь для агрегирования
myDictionary.SetOrIncrement(name, 1);
Однако есть VisualStudio grumbls
«Словарь не содержит определение для „SetOrIncrement“и не метод расширения" SetOrIncrement ', принимающий первый аргумент типа «Словарь».
Может ли кто-нибудь сказать мне, в чем причина?
Вот SetAndIncrement
метод:
public static class ExtensionMethods
{
public static int SetOrIncrement<TKey, int>(this Dictionary<TKey, int> dict, TKey key, int set) {
int value;
if (!dict.TryGetValue(key, out value)) {
dict.Add(key, set);
return set;
}
dict[key] = ++value;
return value;
}
}
Вы включили пространство имен для вашего метода расширения, в коде, в котором вы пытаетесь использовать метод extentionmethod? –
Нет, но класс, использующий метод расширения, находится в том же пространстве имен. 'namespace test {class user {...} public static class ExtensionMethods {...}}' – Explicat
Из интереса, если ключ словаря уже существует, вы действительно имеете в виду, что он игнорирует значение set и все еще увеличивает значение на один из них означает, что вы делаете '+ = set'? Кажется странным игнорировать параметр в некоторых ситуациях ... – Chris