Dictionary w C#: Twój prywatny Google dla obiektów
Wyobraź sobie świat, w którym nie musisz wertować setek kartek, żeby znaleźć numer telefonu przyjaciela.
Wystarczy otworzyć kontakty i wpisać imię – błyskawicznie masz wynik. Tak właśnie działa Dictionary w C# – to Twoje osobiste Google w aplikacji.
Dziś pokażę Ci, dlaczego to jedna z najważniejszych kolekcji w .NET, jak działa pod spodem i jak jej używać, żeby Twoje programy były szybkie i eleganckie.

Co to jest Dictionary<TKey, TValue>?
Dictionary<TKey, TValue> w C# to kolekcja, która przechowuje dane w parach: klucz → wartość.
Klucz musi być unikalny (nie może być null), a wartość to obiekt, który ten klucz reprezentuje.
Przykład z życia:
- Klucz: numer PESEL
- Wartość: obiekt klasy
Customer
Dzięki temu możesz w ułamku sekundy znaleźć klienta, nie przeszukując całej listy jak detektyw w starym archiwum.

Tworzenie słownika w C#
Najpierw definiujemy typ klucza i wartość:
var customers = new Dictionary<int, Customer>()
Możemy od razu dodać dane podczas inicjalizacji:
var customers = new Dictionary<int, Customer>
{
{ customer1.Id, customer1 },
{ customer2.Id, customer2 }
};
I teraz – magia. Szukasz klienta o ID = 34? Wystarczy:
var customer = customers[34];
Porównanie:
- Lista (
List<T>) → musisz szukać elementu „po kolei” (jak przewijanie kontaktów w staryj Nokii). - Dictionary → błyskawiczne wyszukiwanie (jak wpisanie w Google).
Najważniejsze operacje na Dictionary

Dodawanie elementów
customers.Add(3, new Customer { Id = 3, Name = "Jan Nowak" });
Usuwanie
customers.Remove(1); // usuwa klienta o ID = 1
customers.Clear(); // usuwa wszystkich
Sprawdzanie zawartości
bool hasKey = customers.ContainsKey(5);
bool hasValue = customers.ContainsValue(customer1);
Iterowanie po kluczach i wartościach
foreach (var key in customers.Keys)
Console.WriteLine(key);
foreach (var value in customers.Values)
Console.WriteLine(value.Name);
foreach (var pair in customers)
Console.WriteLine($"{pair.Key} → {pair.Value.Name}");
➡️ Mini-podsumowanie: Dictionary to nie tylko szybkie wyszukiwanie – ale też proste metody, które czynią życie programisty przyjemniejszym.
Dlaczego Dictionary jest takie szybkie?
Tu dochodzimy do sedna. Dictionary wewnętrznie korzysta z haszowania.
- Każdy klucz ma swoją metodę
GetHashCode(). - Wynik tej metody (hash) przekształcany jest w indeks tablicy.
- Dzięki temu C# wie, gdzie leży wartość, bez przeszukiwania wszystkiego.
To tak, jakbyś miał bibliotekę, w której każda książka ma GPS i sama do Ciebie podchodzi, gdy o nią poprosisz.

Przykład działania:
- Dodajesz klienta z kluczem
34. - Słownik liczy hash → zapisuje klienta pod odpowiednim indeksem.
- Szukasz klienta o
34→ słownik liczy hash → bach! – od razu wskakuje właściwy obiekt.
➡️ Mini-podsumowanie: To właśnie haszowanie daje Dictionary jego supermoc. Wyszukiwanie jest w czasie zbliżonym do stałego (O(1)).
Kiedy używać Dictionary?
- Gdy potrzebujesz szybkiego dostępu do danych po unikalnym kluczu.
- Gdy Twoja aplikacja ma duże zbiory danych (np. setki tysięcy rekordów).
- Gdy chcesz napisać czytelny i wydajny kod, który zamiast liniowych pętli używa eleganckiego wyszukiwania.
Nie używaj Dictionary, jeśli:
- Klucze mogą się powtarzać (lepiej wtedy np.
LookupalboIGrouping). - Potrzebujesz sortowania po kluczach (tu lepszy będzie
SortedDictionary).
Podsumowanie
Dictionary w C# to must-know dla każdego programisty .NET. Dzięki niemu:
- Twoje aplikacje działają szybciej,
- kod staje się bardziej elegancki,
- a Ty masz w rękach narzędzie, które przypomina własny indeks Google dla obiektów.
Pamiętaj: świat programowania to nie tylko „zrobić, żeby działało”. To także sztuka wyboru najlepszych narzędzi. Dictionary jest jednym z nich.
Co dalej?
👉 Zostaw komentarz – napisz, jak używasz słowników w swoich projektach.
👉 Subskrybuj kanał na YT, żeby nie przegapić kolejnych filmów z C#.
👉 Sprawdź mój kurs online – tam wchodzimy jeszcze głębiej w praktyczne zastosowania kolekcji.
Jako programista C# musisz wiedzieć, że słowniki są kolekcjami opartymi na haszowaniu i dlatego wyszukiwania są bardzo szybkie. W przeciwieństwie do list, wyszukiwanie obiektu w słowniku nie wymaga skanowania każdego obiektu i bez względu na to, jak duży jest słownik, pozostanie on niezwykle szybki.

