Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
 Аватар для akk
44 / 44 / 17
Регистрация: 28.01.2012
Сообщений: 341

Исключение KeyNotFoundException в Dictionary<TKey, TValue>

28.09.2013, 23:11. Показов 2025. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не много не могу понять почему мне VS выдает исключение


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
    public class Protocol
    {
        String q;
        Char a;
 
        public Protocol(String q, Char a)
        {
            this.q = q;
            this.a = a;
        }
        public void SetProtocol(String q, Char a)
        {
            this.q = q;
            this.a = a;
        }
        public String State
        {
            get {
                return q;
            }
            set {
                q = value;
            }
        }
        public Char Symbol
        {
            get {
                return a;
            }
            set {
                a = value;
            }
        }
    }
C#
1
2
Dictionary<Protocol,TransformTo> Commands;
private Protocol CurrentProtocol;
Чтобы не впутывать в работу программы, показываю только часть объявления кода, если нужно то выложу весь код.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.09.2013, 23:11
Ответы с готовыми решениями:

Требуется определить универсальный делегат delegate System.Collections.Generic.KeyValuePair<TKey,TValue> GenerateElement<TKey, TValue>(int j)
Доброго времени суток. Помогите, пожалуйста, разобраться с заданием: &quot;требуется определить универсальный делегат delegate...

Приблизительная реализация Dictionary<TKey,TValue>
Приветствую! Необходима помощь просветлённых в следующей задаче - Используя Visual Studio 2010, создайте проект по шаблону...

Порядок объектов в коллекции Dictionary<TKey, TValue>
Каким образом будут упорядочены объекты в коллекции? Какой метод должен быть переопределён для этого в классе Time? Dictionary&lt;Time,...

8
 Аватар для dev-a1056
228 / 95 / 27
Регистрация: 16.04.2013
Сообщений: 315
Записей в блоге: 2
28.09.2013, 23:27
C#
1
2
3
4
5
6
7
8
9
10
11
12
class EqualityComparerProtocol : IEqualityComparer<Protocol>
    {
        public bool Equals(Protocol x, Protocol y)
        {
            return x.State.Equals(y.State) && x.Symbol.Equals(y.Symbol);
        }
 
        public int GetHashCode(Protocol obj)
        {
            return obj.State.GetHashCode() ^ obj.Symbol.GetHashCode();
        }
    }
далее:
C#
1
Commands = new Dictionary<Protocol, TransformTo>(new EqualityComparerProtocol());
1
 Аватар для akk
44 / 44 / 17
Регистрация: 28.01.2012
Сообщений: 341
28.09.2013, 23:29  [ТС]
dev-a1056, Спасибо огромное!!!) А что этот код значит? Если можно прокомментируйте его, пожалуйста.
0
 Аватар для dev-a1056
228 / 95 / 27
Регистрация: 16.04.2013
Сообщений: 315
Записей в блоге: 2
28.09.2013, 23:32
в твоем случаем словарь сравнивает ссылки на объекты, которые, видимо, разные, а не значения полей. Можешь просто переопределить у Protocol методы:

C#
1
2
3
4
5
6
7
8
9
public override bool Equals(object obj)
        {
            //return base.Equals(obj);
        }
 
        public override int GetHashCode()
        {
            //return base.GetHashCode();
        }
0
 Аватар для akk
44 / 44 / 17
Регистрация: 28.01.2012
Сообщений: 341
28.09.2013, 23:41  [ТС]
Цитата Сообщение от dev-a1056 Посмотреть сообщение
Можешь просто переопределить у Protocol методы:
Если так, то опять не работает.
0
 Аватар для dev-a1056
228 / 95 / 27
Регистрация: 16.04.2013
Сообщений: 315
Записей в блоге: 2
28.09.2013, 23:41
http://msdn.microsoft.com/ru-r... 32151.aspx вот тут все рассказано.

Добавлено через 33 секунды
Цитата Сообщение от akk Посмотреть сообщение
Если так, то опять не работает.
покажи
0
 Аватар для akk
44 / 44 / 17
Регистрация: 28.01.2012
Сообщений: 341
28.09.2013, 23:43  [ТС]
Цитата Сообщение от dev-a1056 Посмотреть сообщение
покажи
что?

Добавлено через 44 секунды
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
    public class Protocol
    {
        String q;
        Char a;
 
        public Protocol(String q, Char a)
        {
            this.q = q;
            this.a = a;
        }
        public void SetProtocol(String q, Char a)
        {
            this.q = q;
            this.a = a;
        }
        public String State
        {
            get {
                return q;
            }
            set {
                q = value;
            }
        }
        public Char Symbol
        {
            get {
                return a;
            }
            set {
                a = value;
            }
        }
        public override bool Equals(object obj)
        {
            return base.Equals(obj);
        }
 
        public override int GetHashCode()
        {
            return base.GetHashCode();
        }
    }
0
 Аватар для dev-a1056
228 / 95 / 27
Регистрация: 16.04.2013
Сообщений: 315
Записей в блоге: 2
28.09.2013, 23:44
C#
1
2
3
4
5
6
7
8
9
10
  public override bool Equals(object obj)
        {
            Protocol protocol = obj as Protocol;
            return protocol != null && State.Equals(protocol.State) && Symbol.Equals(protocol.Symbol);
        }
 
        public override int GetHashCode()
        {
            return State.GetHashCode() ^ Symbol.GetHashCode();
        }
1
 Аватар для akk
44 / 44 / 17
Регистрация: 28.01.2012
Сообщений: 341
28.09.2013, 23:46  [ТС]
dev-a1056, Все работает, спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.09.2013, 23:46
Помогаю со студенческими работами здесь

SortedList<TKey,TValue> пояснение
Поясните, пожалуйста, новичку реализацию коллекции SortedList&lt;TKey,TValue&gt; для конкретного примера :) Пишу по лабораторной приложение, в...

Совмещение типов KeyValuePair<TKey, TValue> и BinaryTree<T>
Решил подправить давнишний код, добавив сравнение элементов в дереве через ключи. Написал KeyValuePair&lt;TKey, TValue&gt;: using System;...

Выборка элементов из Dictinary<TKey, TValue> по условию
В Dictinary&lt;TKey, TValue&gt; value может принимать три значения: высокий , средний , низкий! Как можно выбрать все элементы , которые...

Проход по содержимому ConcurrentBag<T> и ConcurrentDictionary<TKey, TValue>
Перебрать эелементы этих коллекций можно только циклом foreach?

Верно ли понимаю, что KeyValuePair<TKey, TValue>.GetHashCode() возвращает хеш ключа?
Верно ли понимаю, что KeyValuePair&lt;TKey, TValue&gt;.GetHashCode() возвращает хеш ключа?


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru