Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
umc55555
13 / 13 / 1
Регистрация: 11.05.2013
Сообщений: 224
#1

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

24.07.2013, 20:47. Просмотров 1748. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос .NET 4.x SortedDictionary, ContainsKey(0). Исключение "The given key was not present in the dictionary" (C#):

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

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

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

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

Проблема при сравнении: "Оператор ">" не может применяться к операндам типа "Т" и "Т"" - C#
Добрый день , пишу сортировку , все делаю на основе Т , но вот в чем проблемма public class BubbleSort&lt;T&gt;:ISortStrategy&lt;T&gt; { ...

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

6
SanchezPluz
49 / 49 / 1
Регистрация: 31.10.2012
Сообщений: 481
24.07.2013, 21:32 #2
Суть ошибки кроется в ее переводе на великий и могучий: заданный ключ не представлен в словаре.
0
umc55555
13 / 13 / 1
Регистрация: 11.05.2013
Сообщений: 224
25.07.2013, 00:13  [ТС] #3
Цитата Сообщение от SanchezPluz Посмотреть сообщение
Суть ошибки кроется в ее переводе на великий и могучий: заданный ключ не представлен в словаре.
Спасибо, я знаю как переводится. Я не понял смысл.
Имеется в виду, что в словаре не найден ключ 0? Если так, то, очевидно, бред получается. Если не так, то что имеется в виду?
0
Psilon
Master of Orion
Эксперт .NET
5908 / 4805 / 634
Регистрация: 10.07.2011
Сообщений: 14,407
Записей в блоге: 5
Завершенные тесты: 4
25.07.2013, 00:18 #4
umc55555, http://msdn.microsoft.com/ru-ru/libr...vs.100%29.aspx
Бросаемые исключения: ArgumentNullExcetpion. Следовательно, проблема не в этом методе, т.к. физически исключение такого рода им не бросается.
0
umc55555
13 / 13 / 1
Регистрация: 11.05.2013
Сообщений: 224
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
13 / 13 / 1
Регистрация: 11.05.2013
Сообщений: 224
26.07.2013, 17:45  [ТС] #6
P. S. Но такая фигня творится только с нулем. С другими ключами, которых нет в словаре, не выскакивает никаких исключений!
0
kolorotur
Эксперт .NET
9102 / 7605 / 1208
Регистрация: 17.09.2011
Сообщений: 13,131
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
Привет! Вот еще темы с ответами:

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

Необработанное исключение типа "System.IO.IOException" в mscorlib.dll - C#
Добрый день, тут в общем код вот: using System; using System.Collections.Generic; using System.Linq; using System.Management; ...

Необработанное исключение типа "System.FormatException" в mscorlib.dll - C#
Здравствуйте! Не мог бы кто-нибудь помочь разобраться с ошибкой в программе? Не понимаю, что не так:umnik: using System; using...

.NET 4.x Необработанное исключение типа "System.IO.IOException" в mscorlib.dll - C#
Здравствуйте, иногда вылетает данная ошибка: Необработанное исключение типа &quot;System.IO.IOException&quot; в mscorlib.dll Сам код: ...


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

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

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