Использование ассоциативных массивов

C#:
Использование ассоциативных массивов

Как это делать:

В C# с ассоциативными массивами работают с использованием класса Dictionary<TKey, TValue>. Вот быстрый пример для начала:

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Создание словаря
        Dictionary<string, int> fruitBasket = new Dictionary<string, int>();

        // Добавление пар ключ-значение
        fruitBasket.Add("Apples", 5);
        fruitBasket.Add("Oranges", 10);

        // Доступ к значению с использованием его ключа
        Console.WriteLine("Apples: " + fruitBasket["Apples"]);
        
        // Обновление значения
        fruitBasket["Apples"] = 7;
        Console.WriteLine("Updated Apples: " + fruitBasket["Apples"]);
        
        // Удаление пары ключ-значение
        fruitBasket.Remove("Oranges");

        // Итерация по словарю
        foreach (var pair in fruitBasket)
        {
            Console.WriteLine(pair.Key + ": " + pair.Value);
        }
    }
}

Пример вывода:

Apples: 5
Updated Apples: 7
Apples: 7

В этом примере показано создание словаря, добавление, доступ, обновление и удаление элементов, а также итерация по нему.

Подробнее

Концепция ассоциативных массивов восходит к их использованию в языках сценариев, таких как Perl и PHP, где они предлагают гибкость в управлении коллекциями данных. В C#, Dictionary<TKey, TValue> является фактической реализацией, введенной в .NET Framework 2.0. Он хранит данные в хеш-таблице, обеспечивая эффективные поиски, добавления и удаления.

Однако стоит отметить, что хотя словари невероятно универсальны, они могут не всегда быть вашим лучшим выбором. Для поддержания упорядоченных коллекций вы можете рассмотреть SortedDictionary<TKey, TValue> или SortedList<TKey, TValue>, которые предлагают сортированный порядок за счет более медленных операций вставки и удаления. Для сценариев, требующих потокобезопасности, ConcurrentDictionary<TKey, TValue> добавляет накладные расходы, но обеспечивает безопасный доступ с нескольких потоков без ручной блокировки.

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