powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Dictionary.ContainsKey where key is Class
8 сообщений из 8, страница 1 из 1
Dictionary.ContainsKey where key is Class
    #38562958
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!

Я создал
Код: c#
1.
Dictionary<Class, string> dict

.

Каким образом я могу сделать проверку ContainsKey в dictionary на Class.Name, где Name - одно из свойств класса?
...
Рейтинг: 0 / 0
Dictionary.ContainsKey where key is Class
    #38562962
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или это через LINQ нельзя сделать, только через цикл, перебирая KeyValuePair ?
...
Рейтинг: 0 / 0
Dictionary.ContainsKey where key is Class
    #38563303
RomanH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Students,

Все зависит от того, как вы переопределите эти методы:

Код: c#
1.
2.
public override bool Equals(object obj)
public override int GetHashCode()
...
Рейтинг: 0 / 0
Dictionary.ContainsKey where key is Class
    #38563386
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Students, так у тебя ключем является тип Class, то ContainsKey тебе не подойдет, но можно через коллекцию Key найти искомое: dict.Keys.Any(k => k.Name == ???)
...
Рейтинг: 0 / 0
Dictionary.ContainsKey where key is Class
    #38563628
Фотография Абсолют
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazile,

+1

Лучше Extension методом сделать.

Код: c#
1.
public static bool ContainsSpecificKey(this IDictionary<Class, string> items, string name)
...
Рейтинг: 0 / 0
Dictionary.ContainsKey where key is Class
    #38563828
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RomanHStudents,

Все зависит от того, как вы переопределите эти методы:

Код: c#
1.
2.
public override bool Equals(object obj)
public override int GetHashCode()

Или реализовать отдельно IEqualityComparer<Class> и указать его Dictionary.
...
Рейтинг: 0 / 0
Dictionary.ContainsKey where key is Class
    #38563954
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КRomanHStudents,

Все зависит от того, как вы переопределите эти методы:

Код: c#
1.
2.
public override bool Equals(object obj)
public override int GetHashCode()

Или реализовать отдельно IEqualityComparer<Class> и указать его Dictionary.
Ээмм.. "или"??? Человек хочет в Dictionary<SomeClass, T> найти значение, соответствующее ключу, у которого поле Name равно чему-то. У чего переопределять Equals/GetHashCode? У класса-ключа? Это в общем-то надо делать в любом случае. И как это поможет в случае поиска по имени? Dictionary.ContainsKey<T> здесь не примет стринг, хоть ты обпереопределяйся, и вариант здесь только один - поиск по всей коллекции ключей.
...
Рейтинг: 0 / 0
Dictionary.ContainsKey where key is Class
    #38563959
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны... и вариант здесь только один - поиск по всей коллекции ключей.В этом случае использование Dictionary не имеет смысла. Если надо искать по key.Name , то я бы посоветовал сделать Dictionary<string, string> . В противном случае проще использовать обычный List<T>.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Dictionary.ContainsKey where key is Class
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]