Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
В экстазе
 Аватар для wolfalone
168 / 152 / 38
Регистрация: 05.08.2012
Сообщений: 767
Записей в блоге: 3
.NET 4.x

NameValueCollection, проверить наличие ключа

26.06.2015, 05:47. Показов 2664. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток уважаемые!

Имеется переменная типа NameValueCollection (using System.Collections.Specialized;), в которой содержится набор пар ключ=значение.

Подскажите пожалуйста, как правильнее проверить наличие или отсутствие какого-то ключа в данной коллекции? При обращении к несуществующему ключу, ошибки не возникает, но такого рода подход (например, проверка значения которого может не существовать вообще, на соответствие шаблону) мне кажется не правильным.

Спасибо!

Добавлено через 7 минут
Я нашел несколько способов проверить наличие ключа, например так:
C#
1
int k = collection.GetValues("key").Length; //В случае, если k > 0 == ключ существует
или так:
C#
1
int k = collection.Get("key").Length; //В случае, если k > 0 == ключ существует
Но, я уверен, что должны быть какие-то более "стандартные" методы проверки.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.06.2015, 05:47
Ответы с готовыми решениями:

NameValueCollection обращение к несуществующему элементу
Вопрос к тем, кто знаком с особенностями реализации NameValueCollection. Попалась вот такая задача: NameValueCollection col = new...

Почему в NameValueCollection добавляется только одно значение?
Почему коллекция хранит одно значение, если она может хранить несколько значений по одному ключу? NameValueCollection col = new...

Проверить строку на наличие похожести
Пример 1: Есть IP: XXX.XX.XXX.X Если есть другой IP, 111.11.111.1, то выполнится действие некое. И второй пример: Есть слово с...

6
Заблокирован
26.06.2015, 06:58
Цитата Сообщение от wolfalone Посмотреть сообщение
или так:
C#
1
int k = collection.Get("key").Length; //В случае, если k > 0 == ключ существует
wolfalone, у вас такой код работает? Не должен - метод Get вернет <null>, если ключа нет в коллекции.
1
В экстазе
 Аватар для wolfalone
168 / 152 / 38
Регистрация: 05.08.2012
Сообщений: 767
Записей в блоге: 3
26.06.2015, 09:16  [ТС]
Ev_Hyper, Вы правы, код действительно выдает ошибку в случае отсутствия ключа... Но, вариант номер #1 работает исправно. Но, мне не нравится манера исполнения (логика) такой проверки.
0
Заблокирован
26.06.2015, 21:54
wolfalone, если нет null значений, то сравнивайте с ним. Другой альтернативы я не знаю.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
26.06.2015, 22:26
wolfalone, если тип ключа известен, то можно так.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Collections.Specialized;
 
namespace ConsoleApplication6 {
    class Program {
        static void Main(string[] args) {
            NameValueCollection collection = new NameValueCollection();
            if (collection.Keys.OfType<int>().Contains(10)) {
                //Тут что-то делаем...
            }
        }
    }
 
}
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
26.06.2015, 22:46
wolfalone,
а если
C#
1
2
if (Array.IndexOf(collection.AllKeys, "key")>=0)
   //ключ есть
Добавлено через 9 минут
Да, и про Contains можно подумать
C#
1
2
if (collection.AllKeys.Contains("key"))
//и т.д.
0
Заблокирован
26.06.2015, 22:59
Цитата Сообщение от insite2012 Посмотреть сообщение
wolfalone, если тип ключа известен, то можно так.
insite2012, такой вариант с null - ключем работать не будет.
Так что или кастовать или использовать .AllKeys

Представляет коллекцию связанных ключей String и значений String, доступ к которым можно получить с помощью ключа или индекса.
https://msdn.microsoft.com/ru-ru/689y5thy.aspx
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.06.2015, 22:59
Помогаю со студенческими работами здесь

Проверить наличие файла в директории по шаблону
Добрый день. Я еще не волшебник, я только учусь :) мне требуется по нажатию кнопки проверить наличие файла в директории, к примеру...

Проверить наличие строки в txt файле
Ребятя, помогите реализовать поиск строки, например &quot;блаблабла&quot; в txt файле Если же она присутствует, вывести сообщение, если нет, тоже. ...

Как проверить наличие слова в строке?
Есть строка string text = File.ReadAllText(&quot;file.txt&quot;); Как мне узнать есть ли там нужное мне слово?

Проверить string на наличие определённого символосочитания
У меня есть string x = &quot;Бла-бла-бла, ахаха&quot;; Надо проверить его на наличие &quot;бл&quot; и &quot;ах&quot; . Если есть, то выполнить действие. Как...

Как проверить каталог на наличие любого файла?
Собственно вопрос, как реализовать есть файл - действия, нет фала - действие. Но пока не получилось проверить на наличие файлов в каталоге...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru