Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
umc55555
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 226
#1

SortedDictionary, ContainsKey(0). Исключение "The given key was not present in the dictionary"

24.07.2013, 20:47. Просмотров 2019. Ответов 6
Метки нет (Все метки)

Выбрасывается исключение "The given key was not present in the dictionary." при попытке проверить, есть ли в словаре ключ 0. Почему?
Код:
C#
1
2
 if (_array[i] != 0 && !dictionary.ContainsKey(_array[i]))
     dictionary.Add(_array[i], 1);
P. S. Проверку ключа вынес во внутренний if, чтобы не было исключения, но интересует причина ошибки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.07.2013, 20:47
Ответы с готовыми решениями:

List<T>.Contains() и Dictionary<T, T>.ContainsKey(): что быстрее
Какой из вариантов быстрее, когда требуется определить, есть ли объект в...

Dictionary(TKey, TValue).ContainsKey сравнение по значению
есть некоторые полиморфные объекты от одного базового класса Item, потому...

"Ключ отсутствует в словаре" при заполнении Dictionary из файла
здравствуйте. у меня такая проблема. создаю словарь из файла и подсчитываю...

Описать класс "поезд", содержащий поля "пункт назначения", "номер поезда", "время отправления"
Помогите пожалуйста с классом Описать класс «поезд», содержащий следующие...

Построить иерархию классов "Студент", "преподаватель", "персона", "заведующий кафедрой"
Построить иерархию классов: Студент, преподаватель, персона, заведующий...

6
SanchezPluz
49 / 49 / 8
Регистрация: 31.10.2012
Сообщений: 481
24.07.2013, 21:32 #2
Суть ошибки кроется в ее переводе на великий и могучий: заданный ключ не представлен в словаре.
0
umc55555
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 226
25.07.2013, 00:13  [ТС] #3
Цитата Сообщение от SanchezPluz Посмотреть сообщение
Суть ошибки кроется в ее переводе на великий и могучий: заданный ключ не представлен в словаре.
Спасибо, я знаю как переводится. Я не понял смысл.
Имеется в виду, что в словаре не найден ключ 0? Если так, то, очевидно, бред получается. Если не так, то что имеется в виду?
0
Psilon
Master of Orion
Эксперт .NET
5998 / 4848 / 902
Регистрация: 10.07.2011
Сообщений: 14,460
Записей в блоге: 5
Завершенные тесты: 4
25.07.2013, 00:18 #4
umc55555, http://msdn.microsoft.com/ru-ru/libr...vs.100%29.aspx
Бросаемые исключения: ArgumentNullExcetpion. Следовательно, проблема не в этом методе, т.к. физически исключение такого рода им не бросается.
0
umc55555
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 226
25.07.2013, 10:33  [ТС] #5
Цитата Сообщение от Psilon Посмотреть сообщение
проблема не в этом методе
Значит, этот метод содержит такой, который вызывает исключение.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
for (int i = 0; i < _array.Length; i++)
                if (_array[i] != 0 && !dictionary.ContainsKey(_array[i]))
                {
                    k = _arrayDegrees[i];
                    try
                    {
                         local_DegreesCounts.Add(_arrayDegrees[i], 1); // Add degree
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(dictionary.ContainsKey(_array[i]));
                    }
                }
При "поимке" исключения попробовал в MessageBox передать метод, получил то же самое исключение.
Первая строка StackTrace последнего: "at System.Collections.Generic.SortedDictionary`2.get_Item(TKey key)".
При исключении переменная k = 0, как уже писал.

То есть при проверке, существует ли ключ, вызывается метод, который пытается получить ключ. И если ключ = 0, появляется исключение.
0
umc55555
14 / 14 / 7
Регистрация: 11.05.2013
Сообщений: 226
26.07.2013, 17:45  [ТС] #6
P. S. Но такая фигня творится только с нулем. С другими ключами, которых нет в словаре, не выскакивает никаких исключений!
0
kolorotur
Эксперт .NET
10198 / 8557 / 2111
Регистрация: 17.09.2011
Сообщений: 14,691
Завершенные тесты: 1
26.07.2013, 19:37 #7
1. Какой тип переменной _array?
2. Какой тип переменной dictionary?
3. Какой тип переменной _arrayDegrees?
4. Какой тип переменной local_DegreesCounts?
5. Чему равна k на итерации, где вылетает исключение?
6. Чему равна _array[i] на итерации, где вылетает исключение?
7. Чему равна _arrayDegrees[i] на итерации, где вылетает исключение?

Алгоритм похож на хаффмана. Он?
0
26.07.2013, 19:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2013, 19:37

Методом вычислить тип треугольника: "не существует", "тупоугольный", "прямоугольный", "остроугольный"
Помогите пожалуйста С помощью метода вычислить тип треугольника::cry: 1) если...

Проблема при сравнении: "Оператор ">" не может применяться к операндам типа "Т" и "Т""
Добрый день , пишу сортировку , все делаю на основе Т , но вот в чем проблемма...

Напишите программу, которая подсчитывает, сколько учащихся получило "2", "3", "4" и "5"
Помогите, пожалуйста, с решением следующей задачи: учащиеся сдают экзамены по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru