C#Hive: Projects & Progress | Программирование
1.95K subscribers
153 photos
17 videos
1 file
143 links
Сообщество единомышленников C#: решаем задачи, учимся, развиваемся и общаемся вместе. Советы по работе на фрилансе, готовые проекты, код ревью, рекомендации и исследования.

Вопросы/сотрудничество: @tel_phil9
Download Telegram
🖥 Хэш-карта: фундаментальная структура данных

Хэш-карты в C# обеспечивают быстрый доступ к хранимым данным с использованием уникальных ключей. Данные хранятся в парах ключ-значение. Хэш-карты универсальны, что делает их незаменимыми в различных сценариях программирования.

По сути, хэш-карта использует хэш-функцию для преобразования ключа в индекс массива. Если два ключа создают один и тот же индекс, это называется коллизией. В C# класс Dictionary внутренне обрабатывает коллизии.

// Пример использования
Dictionary<string, int> ages = new Dictionary<string, int>();
ages.Add("Alice", 25);
ages.Add("Bob", 30);


Структуры пар значение-ключ лежат в основе большинства сценариев программирования, не только хэш-карт. Реализация хэш-карты в C# — это простой процесс благодаря Dictionary классу.

#Полезно #ХэшКарта #Dictionary
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Сравнение строк из коллекции без учёта регистра

Когда-нибудь приходилось делать поиск по строковому ключу в Dictionary? Проблема со строковыми ключами — это непредсказуемость регистра (vip вместо VIP и т.п.).

Да, решить вопрос можно по-разному, например через string.ToLower. Однако это можно считать моветоном. Хорошим решением данного вопроса является передача параметра StringComparer.CurrentCultureIgnoreCase в конструктор Dictionary.

По аналогии со словарём, использовать данное решение можно и в случае с HashSet. Пример реализации:
HashSet<string> statuses = new HashSet<string>(StringComparer.CurrentCultureIgnoreCase)
{
"VIP",
"Premium"
};

Console.WriteLine(statuses.Contains("VIP")); // true
Console.WriteLine(statuses.Contains("vip")); // true


#Полезно #StringComparer #Dictionary #HashSet #Array
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍5