Допустим, у нас есть словарь, как это:словарь не ++ работает, как ожидалось
var dic = new Dictionary<Int32, Int32>();
В то время как ключ является идентификатором и значение является счетчиком. Теперь мы хотим добавить новый ключ. Это отлично работает с помощью следующей строки:
dic[1] = 1; //adding ID 1, Count 1 to the current Dictionary
Если предположить, что у нас есть список целочисленных со следующими значениями:
var ids = new List<int> {1, 2, 3 , 1, 2};
Где мы хотели бы получить словарь со следующим содержанием:
[1, 2] ==> (ID 1, Count 2)
[2, 2] ==> (ID 2, Count 2)
[3, 1] ==> (ID 3, Count 1)
очевидным решением было бы:
foreach (var id in ids)
{
dic[id]++;
}
Но это метание KeyNotFoundException
. Поэтому очевидно, что оператор +=
не поддерживается для словарей.
Я уже приложил ответ на эту проблему. Есть ли лучший способ добиться этого?
Я думаю, что ваш 'else' должен содержать' dic.Add (идентификатор, 1); '. – CodeCaster
@CodeCaster No. Это решение работает. Я протестировал его. :) –
Я исправлен, [manual] (http://msdn.microsoft.com/en-us/library/9tee9ht2.aspx): _ «Вы также можете использовать свойство [indexer] для добавления новых элементов, установив значение ключа, которого нет в словаре. "_ –
CodeCaster