Tablice a inne kolekcje.
Tablice to świetny punkt startowy do nauki pracy z kolekcjami w C#. Co ciekawe, wiele zasad, które poznałeś przy tablicach, działa również w przypadku innych kolekcji, takich jak lista (List<T>
), słownik (Dictionary<TKey, TValue>
), kolejka czy stos. Jednak diabeł tkwi w szczegółach.
Dzięki temu nie musisz uczyć się wszystkiego od zera – znajoma składnia i mechanizmy pojawiają się w wielu miejscach.
Co łączy tablice i inne kolekcje?
1. Indeksowanie od zera
- Tablice:
monthsOfYear[0]
→ pierwszy element. - Lista:
numbers[0]
→ pierwszy element listy. - W obu przypadkach indeksy zaczynają się od 0.
2. Operator indeksu []
W tablicach:
string january = monthsOfYear[0];
W listach:
var firstNumber = numbers[0];
Operator działa identycznie – wskazuje element po indeksie.
3. Iteracja za pomocą foreach
Większość typów kolekcji w C# ma jedną wspólną, potężną cechę: można po nich iterować za pomocą pętli foreach
. Dzieje się tak, ponieważ kolekcje te implementują specjalny interfejs (IEnumerable
), który gwarantuje możliwość sekwencyjnego przeglądania zawartości. To faktycznie duże ułatwienie!
Tablica
foreach (var month in monthsOfYear)
Console.WriteLine(month);
Lista
foreach (var number in numbers)
Console.WriteLine(number);
Mechanizm ten sam – kolekcje można przechodzić pętlą bez znajomości ich rozmiaru.
Różnice między tablicami a innymi kolekcjami
- Tablica (
array
) ma stałą długość – po utworzeniu nie można jej zmienić. - Lista (
List<T>
) jest dynamiczna – można dodawać i usuwać elementy. - Słownik (
Dictionary<TKey, TValue>
) pozwala odwoływać się do wartości nie przez indeks, ale przez klucz:
var capitals = new Dictionary<string, string>
{
["Poland"] = "Warsaw",
["Germany"] = "Berlin"
};
Console.WriteLine(capitals["Poland"]); // Warsaw
- Kolejka (
Queue<T>
) i stos (Stack<T>
) działają według innych reguł (FIFO, LIFO), ale także są kolekcjami.
Dlaczego to ważne?
Zrozumienie tablic to fundament, dzięki któremu łatwiej opanujesz inne kolekcje. Składnia ([]
, foreach
, indeksowanie) jest spójna, więc poznając jedną strukturę, uczysz się wielu.
Kiedy czego używać? Praktyczna ściągawka
Wybór odpowiedniej kolekcji to jedna z najważniejszych decyzji, jakie podejmujesz podczas kodowania.
- Użyj Tablicy (
string[]
) gdy:
- ✅ Znasz dokładną liczbę elementów z góry (np. dni tygodnia, miesiące).
- ✅ Zależy Ci na maksymalnej wydajności i minimalnym zużyciu pamięci.
- ❌ Nie planujesz dodawać ani usuwać elementów.
- Użyj Listy (
List<string>
) gdy:
- ✅ Nie wiesz, ile elementów będziesz przechowywać.
- ✅ Potrzebujesz swobodnie dodawać, usuwać i sortować elementy.
- ✅ Jest to najczęstszy i najbardziej uniwersalny wybór do ogólnych zastosowań.
- Użyj Słownika (
Dictionary<string, User>
) gdy:
- ✅ Potrzebujesz błyskawicznie wyszukiwać elementy na podstawie unikalnego identyfikatora (jak numer PESEL, login użytkownika, kod produktu).
- ✅ Każdy element danych można opisać unikalnym kluczem.
- ❌ Kolejność elementów nie ma znaczenia.
A co z Kolejką i Stosem?
Warto wiedzieć, że istnieją też inne wyspecjalizowane kolekcje, takie jak Queue<T>
(kolejka) i Stack<T>
(stos), które w ogóle nie używają indeksera []
!
Dostęp do danych odbywa się w nich za pomocą dedykowanych metod (Enqueue/Dequeue
dla kolejki, Push/Pop
dla stosu).
Podsumowanie
- Wiele zasad znanych z tablic działa także w listach i słownikach.
- Operator
[]
służy zarówno do odczytu, jak i zapisu elementów. - Wszystkie kolekcje w C# można wyliczać przy pomocy
foreach
. - Tablice są stałe, listy dynamiczne, a słowniki opierają się na kluczach.
Opanowanie C# to nie tylko znajomość składni, ale przede wszystkim umiejętność doboru odpowiednich narzędzi do rozwiązywanego problemu. Traktuj kolekcje jak zestaw specjalistycznych narzędzi: tablica to precyzyjny śrubokręt, lista to uniwersalny klucz francuski, a słownik to super-szybka wyszukiwarka.
Wiedza o ich różnicach pozwoli Ci pisać kod, który jest nie tylko poprawny, ale też wydajny i czytelny.
👉 Jeśli chcesz poznać wszystkie kolekcje w C# (tablice, listy, kolejki, stosy, słowniki) i dowiedzieć się, kiedy której używać, sprawdź kurs:
https://dev-hobby.pl/kursy/c-wprowadzenie-do-kolekcji/
Możesz użyć pętli foreach, aby wyliczyć wszystkie elementy w kolekcji, zwykle używasz składni nawiasu kwadratowego do identyfikowania elementów w kolekcji, lub gdy chcesz odczytać, czy zapisać element kolekcji, ale kiedy używasz składni nawiasu kwadratowego, musisz używać indeksowania od zera