Utilizando arrays associativos

C#:
Utilizando arrays associativos

Como fazer:

Em C#, você trabalha com arrays associativos usando a classe Dictionary<TKey, TValue>. Aqui está um exemplo rápido para começar:

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Criando um dicionário
        Dictionary<string, int> fruitBasket = new Dictionary<string, int>();

        // Adicionando pares chave-valor
        fruitBasket.Add("Apples", 5);
        fruitBasket.Add("Oranges", 10);

        // Acessando um valor usando sua chave
        Console.WriteLine("Apples: " + fruitBasket["Apples"]);
        
        // Atualizando um valor
        fruitBasket["Apples"] = 7;
        Console.WriteLine("Updated Apples: " + fruitBasket["Apples"]);
        
        // Removendo um par chave-valor
        fruitBasket.Remove("Oranges");

        // Iterando sobre o dicionário
        foreach (var pair in fruitBasket)
        {
            Console.WriteLine(pair.Key + ": " + pair.Value);
        }
    }
}

Saída de Exemplo:

Apples: 5
Updated Apples: 7
Apples: 7

Este exemplo mostra como criar um dicionário, adicionar, acessar, atualizar e remover elementos, e iterar sobre ele.

Aprofundamento

O conceito de arrays associativos remonta ao seu uso em linguagens de script como Perl e PHP, onde oferecem flexibilidade na gestão de coleções de dados. Em C#, Dictionary<TKey, TValue> é a implementação de facto, introduzida no .NET Framework 2.0. Ele armazena dados em uma tabela hash, garantindo buscas, adições e deleções eficientes.

No entanto, vale ressaltar que, embora os dicionários sejam incrivelmente versáteis, eles podem não ser sempre a melhor opção. Para manter coleções ordenadas, você pode considerar SortedDictionary<TKey, TValue> ou SortedList<TKey, TValue>, que oferecem ordem classificada a custo de operações de inserção e remoção mais lentas. Para cenários que exigem segurança entre threads, ConcurrentDictionary<TKey, TValue> adiciona sobrecarga mas garante acesso seguro de múltiplos threads sem bloqueio manual.

Em última análise, a escolha de uma implementação de array associativo em C# depende das suas necessidades específicas quanto à ordem, performance e segurança entre threads.