Att använda associativa arrayer

C#:
Att använda associativa arrayer

Hur man gör:

I C# arbetar du med associativa fält genom att använda klassen Dictionary<TKey, TValue>. Här är ett snabbt exempel för att komma igång:

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Skapar en ordbok
        Dictionary<string, int> fruitBasket = new Dictionary<string, int>();

        // Lägger till nyckel-värde-par
        fruitBasket.Add("Apples", 5);
        fruitBasket.Add("Oranges", 10);

        // Åtkomst av ett värde med dess nyckel
        Console.WriteLine("Apples: " + fruitBasket["Apples"]);
        
        // Uppdaterar ett värde
        fruitBasket["Apples"] = 7;
        Console.WriteLine("Uppdaterade Äpplen: " + fruitBasket["Apples"]);
        
        // Tar bort ett nyckel-värde-par
        fruitBasket.Remove("Oranges");

        // Itererar över ordboken
        foreach (var par in fruitBasket)
        {
            Console.WriteLine(par.Key + ": " + par.Value);
        }
    }
}

Exempelutdata:

Apples: 5
Uppdaterade Äpplen: 7
Apples: 7

Detta exempel visar hur man skapar en ordbok, lägger till, åtkomster, uppdaterar och tar bort element, samt itererar över den.

Fördjupning

Konceptet med associativa fält går tillbaka till deras användning i skriptspråk som Perl och PHP, där de erbjuder flexibilitet i hanteringen av datasamlingar. I C# är Dictionary<TKey, TValue> den faktiska implementeringen, introducerad i .NET Framework 2.0. Den lagrar data i en hashtabell, vilket säkerställer effektiva sökningar, tillägg och borttagningar.

Det är dock värt att notera att även om ordböcker är otroligt mångsidiga, kanske de inte alltid är ditt bästa val. För att upprätthålla ordnade samlingar kan du titta på SortedDictionary<TKey, TValue> eller SortedList<TKey, TValue>, vilka erbjuder sorterad ordning till priset av långsammare insättningar och borttagningar. För scenarier som kräver trådsäkerhet lägger ConcurrentDictionary<TKey, TValue> till overhead men säkerställer säker åtkomst från flera trådar utan manuell låsning.

Slutligen beror valet av en implementering av associativa fält i C# på dina specifika behov med avseende på ordning, prestanda, och trådsäkerhet.