Вы можете определить метод расширения для словарей следующим образом:
public static class DictionaryExtension
{
public static void AddCount<T>(this Dictionary<T, int> dict, T key)
{
if (dict.ContainsKey(key))
{
dict[key]++;
}
else
{
dict[key] = 1;
}
}
}
Затем вы можете использовать его следующим образом:
Dictionary<string, int> count = new Dictionary<string, int>();
count.AddCount("foo");
count.AddCount("bar");
count.AddCount("foo");
К go далее вы можете получить Новый тип от Dictionary
и ввести новый индексатор:
public class FancyDict<T> : Dictionary<T,int>
{
public new int this[T key]
{
get => this.ContainsKey(key) ? base[key] : 0;
set => base[key] = value;
}
}
Это позволяет использовать синтаксис []
:
FancyDict<string> fancyCount = new FancyDict<string>();
fancyCount["foo"]++;
fancyCount["bar"]++;
fancyCount["foo"]++;
foreach (var key in fancyCount.Keys)
{
Console.WriteLine(key + " : " + fancyCount[key]);
}